SQL查询-基于数值返回文本
我试图计算出一个查询,其中该查询将对特定列执行计数(总计)。如果计数大于0,我希望显示是,如果返回的计数为零,则显示否 因此,如果我将查询设置为:SQL查询-基于数值返回文本,sql,count,Sql,Count,我试图计算出一个查询,其中该查询将对特定列执行计数(总计)。如果计数大于0,我希望显示是,如果返回的计数为零,则显示否 因此,如果我将查询设置为: SELECT COUNT(ProblemID) FROM dbo.ProblemInfo WHERE (ProblemID IN (100,101,309,305,205,600,500)) AND (DEPID = '10866') 这实际上是一个子查询,当返回的计数大于0时,如何使子查询显示“是”,如果计数为0,如何使子查询显示“否” 非常感谢
SELECT COUNT(ProblemID)
FROM dbo.ProblemInfo
WHERE (ProblemID IN (100,101,309,305,205,600,500)) AND (DEPID = '10866')
这实际上是一个子查询,当返回的计数大于0时,如何使子查询显示“是”,如果计数为0,如何使子查询显示“否”
非常感谢您的帮助。试试看
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
您可以在需要时使用case
SELECT
case
when COUNT(ProblemID) = 0 then 'NO'
else 'YES'
end
FROM dbo.ProblemInfo WHERE (ProblemID IN (100,101,309,305,205,600,500)) AND (DEPID = '10866')
如果至少有一个匹配行,则返回YES
,否则返回null
包装
isnull
调用然后将null
转换为NO
以下是另一种查询方法
IF EXISTS(
SELECT *
FROM dbo.ProblemInfo
WHERE (ProblemID IN (100,101,309,305,205,600,500))
AND (DEPID = '10866')
)
BEGIN
SELECT 'Yes'
END
ELSE
BEGIN
SELECT 'No'
END
我喜欢这种方法的地方在于,对于庞大的数据集,它应该会明显更快。您使用的是哪种数据库(Oracle/SQL Server/Postgresql…)?这就是我开始进行查询的地方。我不经常使用SQL,所以我忘记了更精细的地方。这很好。@Ray很高兴能帮上忙:-)请不要忘记接受任何有帮助的答案(请参阅)。很有趣。我忘了提到我正在使用MS SQL,但是这是一个很好的查询。谢谢这特别有趣。虽然速度始终不是一个巨大的因素,但重要的是要意识到这一点。我将不得不尝试这个查询。我非常感谢你的帮助。
IF EXISTS(
SELECT *
FROM dbo.ProblemInfo
WHERE (ProblemID IN (100,101,309,305,205,600,500))
AND (DEPID = '10866')
)
BEGIN
SELECT 'Yes'
END
ELSE
BEGIN
SELECT 'No'
END