2016-07-21 10 views
2

CASEを使用して同じフィールドのWHERE句で2つの矛盾した条件をチェックしたいと思います。私は私が欲しいものを抽出する場合ケースステートメントでの矛盾した条件チェック

WHERE FULFILMENT_STATUS_CODE != 'CNL' 
WHERE FULFILMENT_STATUS_CODE = 'FUL' 

下に示し彼らは方法私は彼女

WHERE 
    FULFILMENT_STATUS_CODE = 
    CASE @pFILTER_TYPE 
     WHEN 1 THEN 'CNL' 
     WHEN 2 THEN 'FUL' 
    END 

答えて

3

ドンに=!試してみました(と希望)以下のように、しかし、私は持っているか疑問「TはWHERECASEが、ORANDを使用します。

WHERE 
    (@pFILTER_TYPE = 1 AND FULFILMENT_STATUS_CODE <> 'CNL') 
OR 
    (@pFILTER_TYPE = 2 AND FULFILMENT_STATUS_CODE = 'FUL') 

しかし、すべてのレコードのパラメータを評価する代わりに、このストアドプロシージャ内でIF...ELSEを2つの異なるクエリで使用することもできます。それはより冗長であるだけでなく、より効率的です。