Sql server 如果SELECT语句没有结果,则使用CASE返回字符串

Sql server 如果SELECT语句没有结果,则使用CASE返回字符串,sql-server,sql-server-2008,tsql,Sql Server,Sql Server 2008,Tsql,如果SELECT语句没有结果,是否可以使用CASE返回某个字符串 例如: DECLARE @accountnumber AS VARCHAR(10) SET @accountnumber = 'account number to search' SELECT CASE WHEN account IS NOT NULL THEN 'We Have Records of this Customer' WHEN account IS NULL THEN '

如果SELECT语句没有结果,是否可以使用CASE返回某个字符串

例如:

DECLARE @accountnumber AS VARCHAR(10)

SET @accountnumber = 'account number to search'

SELECT 
    CASE
    WHEN account IS NOT NULL
    THEN 'We Have Records of this Customer'
    WHEN account IS NULL
    THEN 'We Do Not Have Records For This Customer'
    END AS 'result'
FROM call_records
WHERE account = @accountnumber
GROUP BY account
上述操作不起作用,因为如果我正在搜索的帐号不在我的日志表中,则不会有任何结果,并且“我们没有此客户的记录”消息将永远不会出现。
我可以使用带打印命令的纯T-SQL实现我想要实现的目标,但我使用的是第三方应用程序,结果必须是表格形式(因此仅限SELECT语句)。

试试:

DECLARE @accountnumber AS VARCHAR(10)

SET @accountnumber = 'account number to search'

SELECT 
    CASE
    WHEN account IS NOT NULL
    THEN 'We Have Records of this Customer'
    WHEN account IS NULL
    THEN 'We Do Not Have Records For This Customer'
    END AS 'result'
FROM (select 1 dummy) dummy
left join call_records ON account = @accountnumber
GROUP BY account

您可以使用
EXISTS

SELECT 
    CASE
    WHEN EXISTS(
        SELECT 1 FROM call_records
        WHERE account = @accountnumber
    ) 
    THEN  'We Have Records of this Customer'
    ELSE  'We Do Not Have Records For This Customer'
    END AS 'result';

通话记录
中,一个
帐户
可能有多个匹配记录?如果是这样的话,你只想要一行结果吗?@MartinSmith:注意提供的查询的最后一行(我第一次阅读问题时也错过了它)。@MarkBannister-说得好。即使有,它也将返回一行。