2012-02-28 13 views
1

複数のジョブが見つかった場合は、MSSQL文に 'multiple'という文字列を返すようにします。 1つのジョブだけが見つかった場合、私が正しく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文がなければ、集計またはグループ化が必要であるというエラーが出力されます。

答えて

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 

UPDATE:

私は質問を誤解したように見えます。結果セットにすべてのジョブのレコードが1つだけ必要な場合は、このトリックが必要です。

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

私はこのように見えますが、常にcount = 1のように見えます。 '複数の' ELSE job_no END FROM(job_no、COUNT(*)を選択してください) FROM job_table WHERE item_no LIKE '%11012%' GROUP BY job_no)AS t'はカウントを返します=各ジョブに対して1 =見つかった – ryatkins

+0

ああ、そうだ。私は自分の答えを更新しました。 –

+0

それは素晴らしい、ありがとう! – ryatkins

関連する問題