如果多个值返回字符串,如果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%'
我喜欢这个样子,但总是返回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
啊,我明白了。我更新了我的答案。 – 2012-02-28 19:47:10
这很好,谢谢! – ryatkins 2012-02-28 20:19:07