SQL CASE SUBQUERY COUNT

时间:2013-03-01 12:24:45

标签: sql count case

我有2个col的表:

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

客户将输入名称,我必须检索具有相应值的UID。如果名称不会出现在行中,则必须检索000,而不是没有行。

我正在尝试写这样的查询:

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

请在这方面帮助我。提前谢谢......

3 个答案:

答案 0 :(得分:1)

如果UID是整数,那么您需要考虑强制转换:

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

强制转换属于UID类型,在您的示例中似乎是char(3)。

如果没有匹配的行,则max()函数返回NULL。 coalesce()将此值转换为您要查找的值。

答案 1 :(得分:0)

试试这个

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

答案 2 :(得分: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