2017-07-11 15 views
0

'ALL'、 'OTHER'、または 'HK'のような特定の国の略語の可能な値を持つ国に使用されるプロシージャにパラメータを渡したい'TW' 'OTHER'は、特に記載されていない国(この場合は 'HK'、 'TW')をすべて選択する必要があります。sqlどこに1つのパラメータが等しいかどうか

私が現在考えることができる唯一の方法は、IF/ELSEを使用して2つの別個のクエリとして行うことです。

IF (@i_Country = 'OTHER') 
    SELECT * FROM table WHERE Country NOT IN ('HK', 'TW') 
ELSE 
    SELECT * FROM table WHERE Country LIKE 
    CASE 
     WHEN @i_Country = 'ALL' THEN '%' 
     ELSE @i_Country 
    END 

IF/ELSEを使用せずに1つのクエリのWHEREにこれをきれいに入れることはできますか?

答えて

1

私はテーブルなしでテストすることはできませんので、このショットを与えることができます。

SELECT * 
FROM [table] 
WHERE (@i_Country = 'OTHER' AND Country NOT IN ('HK', 'TW')) 
OR (@i_Country <> 'ALL' AND @i_Country <> 'OTHER' AND Country = @i_Country) 
OR (@i_Country = 'ALL') 
関連する問題