我正在尝试查询查询将在特定列上执行计数(总计)的查询。如果计数大于0,我想显示YES,如果返回的计数为零,则显示NO。
所以,如果我这样查询:
SELECT COUNT(ProblemID)
FROM dbo.ProblemInfo
WHERE (ProblemID IN (100,101,309,305,205,600,500)) AND (DEPID = '10866')
实际上是一个子查询,如果返回的计数大于0,如何让子查询显示“YES”,如果计数为0,如何显示NO?
我感谢任何见解和帮助。
答案 0 :(得分:3)
select isnull(
SELECT MAX('YES')
FROM dbo.ProblemInfo
WHERE ProblemID IN (100,101,309,305,205,600,500)
AND DEPID = '10866'),
'NO')
如果至少有一个匹配的行,则返回YES
这一技巧,如果没有,则返回null
。
包裹isnull
调用然后将null
变为NO
答案 1 :(得分:1)
试
SELECT CASE
WHEN (SELECT COUNT(ProblemID) FROM dbo.ProblemInfo WHERE (ProblemID IN (100,101,309,305,205,600,500)) AND (DEPID = '10866')) > 0
THEN 'YES'
ELSE 'NO' END
FROM YourTable