Возвращает строку, если несколько значений, если count = 1, возвращает значение столбца - PullRequest
1 голос
/ 28 февраля 2012

Я бы хотел, чтобы мой оператор MSSQL возвращал строку 'множественные', если найдено несколько заданий.Если найдена только одна работа, я хочу вернуть значение, найденное в 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

Вышеприведенный оператор неверно оценивает счетчик (*) и возвращает все работы вместо строки «кратно»,Я полагаю, что это потому, что оператор группы заставляет его оценивать каждую строку отдельно.Без оператора GROUP BY выдает ошибку, что ему нужен агрегат или группа по.

1 Ответ

2 голосов
/ 28 февраля 2012
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%'
...