14

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ステートメントのみ)。

4

2 に答える 2

27

あなたが使用することができます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';
于 2013-02-18T16:56:14.123 に答える
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
于 2013-02-18T16:54:22.507 に答える