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

问题描述:

如果找到多个作业,我希望我的MSSQL语句返回字符串'multiple'。如果只找到一个工作,我想正确返回job_no如果多个值返回字符串,如果count = 1返回列值

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(*)中找到的值,并返回所有的工作,而不是字符串“多”。我相信这是因为团体声明导致它分别评估每一行。如果没有GROUP BY语句,它就会出错,它需要一个聚合或分组。

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 

UPDATE:

貌似我误解了这个问题。如果你只需要在结果集中记录所有作业的记录,这应该是诀窍:

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

我喜欢这个样子,但总是返回count = 1。 'SELECT COUNT,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' returns count = 1 for each job_no found – ryatkins 2012-02-28 19:10:34

+0

啊,我明白了。我更新了我的答案。 – 2012-02-28 19:47:10

+0

这很好,谢谢! – ryatkins 2012-02-28 20:19:07