如果找到多个作业,我希望我的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语句,则会错误地说它需要聚合或分组。
答案 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%'