1

私は2列のテーブルを持っています:

UID    NAME
-----------
111    AAA
222    BBB

顧客は名前を入力し、それぞれの値で UID を取得する必要があります。名前が行に存在しない場合は、行がない場合とは異なり、000 を取得する必要があります。

私は次のようなクエリを書こうとしています:

SELECT  
   CASE UID 
      WHEN Count(*) = 0 THEN '000'
      ELSE UID 
   END
FROM table1   
WHERE NAME ='XXX'

この点で私を助けてください。前もって感謝します...

4

3 に答える 3

1

UIDが整数の場合、キャストを考慮する必要があります。

select coalesce(cast(max(uid) as char(3)), '000')
from table1
where name = 'XXX'

キャストはUIDのタイプを対象としています。これは、例ではchar(3)のようです。

一致する行がない場合、max()関数はNULLを返します。これcoalesce()をあなたが探している価値に変えます。

于 2013-03-01T14:08:53.243 に答える
0

これを試して

select case
           when max(id) is null then
            0
           else
            max(id)
       end
  from table1
 where name = 'b'
于 2013-03-01T12:31:23.513 に答える
0

場合にエラーがあります

SELECT case when count(UID) = 0 THEN '000' ELSE UID end FROM table1 where name = 'XXX'

sqlfiddle : http://www.sqlfiddle.com/#!2/257ea/1

于 2013-03-01T12:33:54.480 に答える