2013-02-18 7 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'に複数の一致するレコードがあるかもしれませんか?もしそうなら、単一行の結果だけが必要ですか? –

+1

@MartinSmith:提供されたクエリの最終行に注意してください(私が最初に質問を読んだときにそれを逃しました)。 –

+0

@ MarkBannister - 良い点。たとえあったとしても、それは単一の行を返します。 –

答えて

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 
関連する問題