プロが教えるわが家の防犯対策術!

お世話になります。

Where句のCase文でお尋ねしたいことがあります。

-----------------------------------------------------
WHERE (A = @A)
AND (B = @B)
AND (C = @C)
AND
CASE WHEN @D = 0 THEN (dbo.TEST.D = dbo.TEST.D) '全データを
WHEN @D = 1 THEN (dbo.TEST.D = 1) '値が1のデータを
WHEN @D = 2 THEN (dbo.TEST.D = Is Null) 'データがNull のものを
END
AND (E = @E)
AND (F = @F)
AND (G = @G)
AND (H = @H)
AND
CASE WHEN @I = 0 THEN (dbo.TEST.I = dbo.TEST.I)
WHEN @I = 1 THEN (dbo.TEST.I = 1)
WHEN @I = 2 THEN (dbo.TEST.I = Is Null)
END
AND (J = @J)
........
........
-----------------------------------------------------

上記のように CASE 文で パラメータの値により条件を変えたいのですが、なかなかうまくいきません。こんな記述の仕方ではダメということは薄々わかっているのですが、このようなCASE文をうまく動作させるにはどのように記述すればいいでしょうか?

よろしくお願いいたします。

A 回答 (1件)

CASE WHEN @D = 0 THEN (dbo.TEST.D = dbo.TEST.D) '全データを


WHEN @D = 1 THEN (dbo.TEST.D = 1) '値が1のデータを
WHEN @D = 2 THEN (dbo.TEST.D = Is Null) 'データがNull のものを



((@D = 0 AND dbo.TEST.D = dbo.TEST.D)
OR (@D = 1 AND dbo.TEST.D = 1)
OR (@D = 2 AND dbo.TEST.D = Is Null)
)
とした方がよいかと思います。
    • good
    • 1
この回答へのお礼

Picosoft さん お世話になります。

ご指摘のコードでやりたいことが実現できました。
パラメータと抽出データはANDでセットしなければいけないんですね。とても勉強になりました。

ありがとうございました。

お礼日時:2013/09/06 15:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す