2013-03-01 87 views
1

我有表2列:SQL CASE SUBQUERY COUNT

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

客戶將進入的名字,我要檢索與各自的價值UID。如果名稱不會出現在行中,它必須檢索000,而不是像沒有行。

我想寫這樣的查詢:

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

請幫我在這方面。在此先感謝...

回答

0

試試這個

select case 
      when max(id) is null then 
      0 
      else 
      max(id) 
     end 
    from table1 
where name = 'b' 
1

如果UID是一個整數,那麼你就需要採取強制轉換考慮到:

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

該演員的目的是爲了UID的類型,這在你的例子中似乎是char(3)。

當沒有匹配的行時,max()函數返回NULL。 coalesce()將其轉換爲您正在查找的值。