2017-06-13 22 views
1

where句(!=)でcase文を使用する方法を理解しようとしていますが、ここでは何をしようとしているのか考えています:WHERE節の!=条件付きCASE文

SELECT * 
FROM Table1 JOIN Table2 JOIN Table3 
WHERE 
    CASE @fruit 
    WHEN 'Apples' THEN (What would go here to return only data related to apples in Table1?) 
    WHEN 'Citrus' THEN (What would go here to return data related to either oranges or lemons in Table2?) 
    WHEN 'Other' THEN (return all data not related to apples, oranges, or lemons from all 3 tables) (!=) 
    END 

私はwhere句でcase文のいくつかの例を見ましたが、!= conditionを持つものではありません。何か案は?

+0

あなたはSQLデータベースを達成しようとしていますか?あなたのデータと予想される出力を投稿する場合に役立ちます – maSTAShuFu

+0

SQL Server。 – user3088720

+0

大丈夫...私が言うことができるのはgoodluckです – maSTAShuFu

答えて

1

私があなたの質問を理解していれば、平等以外のブール式を評価したいと思っています。 CASE文は二つの形式、あなたがしようとしている1(常に平等を探して)、この他の形式になります。

CASE 
    WHEN <boolean expression> THEN <result expression> 
    WHEN <boolean expression> THEN <result expression> 
    ELSE <else expression> 
END 
2

AND/OR単純な組み合わせが行います。

SELECT * 
FROM Table 
WHERE 
    (@fruit != 'Other' AND Fruit = @fruit) OR 
    (@fruit = 'Other' AND Fruit NOT IN('Apples', 'Oranges') 
+0

SSRSで渡されているものに対して変数をチェックする方法を見ていますが、私は見ていませんどのようにデータをフィルタリングするためにそれを使用しているのですか(例:Table1.Fruit = 'Apples') – user3088720

0

だけで使用あなたはこの

のように、ケース内のパラメータを使用することができます

SELECT * 
FROM Table 
WHERE 
    CASE @fruit 
    WHEN 'Apples' THEN (What would go here to return only data related to apples?) 
    WHEN 'Oranges' THEN (What would go here to return only data related to oranges?) 
    ELSE (return all data not related to apples or oranges) (!=) 
    END 

OR他のすべてのためのELSE

SELECT * 
FROM Table 
WHERE 
    CASE 
    WHEN @fruit = 'Apples' THEN (What would go here to return only data related to apples?) 
    WHEN @fruit = 'Oranges' THEN (What would go here to return only data related to oranges?) 
    WHEN @fruit <> 'Apples' AND @fruit <> 'Oranges' THEN (return all data not related to apples or oranges) (!=) 
    END 
+0

アドバイスをいただきありがとうございます。私の元のコードは私が達成しようとしていたことをはっきりとは思わなかった、 。 – user3088720

+0

@ user3088720私はコードを編集しています。 – asmgx