如果多个值返回字符串,如果count = 1则返回列值

时间:2012-02-28 17:24:38

标签: sql-server count sql-server-2000 case

如果找到多个作业,我希望我的MSSQL语句返回字符串'multiple'。如果只找到一个作业,我想返回在job_no

中找到的值
SELECT     CASE WHEN COUNT(*) = 1 THEN job_no ELSE 'multiple' END AS Expr1
FROM        job_table
WHERE     (item_no LIKE '%11012%')
GROUP BY job_no

上述语句未正确计算count(*)并返回所有作业而不是字符串'multiple'。我认为这是因为组声明导致它分别评估每一行。如果没有GROUP BY语句,则会错误地说它需要聚合或分组。

1 个答案:

答案 0 :(得分:2)

select case when count > 1 then 'multiple' else job_no end from
(select job_no, COUNT(*) as count 
from job_table where item_no like '%11012%' group by job_no) as t

更新:

看起来我误解了这个问题。如果您只需要在结果集中为所有作业创建一条记录,那么这应该可以解决问题:

select case when count(*) > 1 then 'multiple' else MAX(job_no) end 
from job_table where item_no like '%11012%'