2013-02-18 20 views
11

如果沒有SELECT語句的結果,是否可以使用CASE返回某個字符串?如果沒有來自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 

上述不起作用,因爲如果帳號我正在尋找在我的日誌表中不存在,那麼就不會有結果和信息「我們沒有記錄對於這個客戶'永遠不會實現。
我可以做什麼,我試圖實現與PRINT命令使用純T-SQL,但我正在與第三方應用程序和結果必須以表格形式(所以只有SELECT語句)。

+0

那裏可能不止一個匹配記錄更多的'call_records'的'account'?如果是這樣,你只需要一個單行結果? – 2013-02-18 16:54:32

+1

@MartinSmith:注意提供的查詢的最後一行(當我第一次閱讀該問題時,我錯過了它)。 – 2013-02-18 16:56:09

+0

@MarkBannister - 好點。即使有,它會返回一行。 – 2013-02-18 16:56:45

回答

20

您可以使用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'; 
6

嘗試:

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 
相關問題