SQL查询-基于数值返回文本

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,如何使子查询显示“否” 非常感谢

我试图计算出一个查询,其中该查询将对特定列执行计数(总计)。如果计数大于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