Iストアドプロシージャに渡されるさまざまなパラメータ値を指定して、異なる 'Where句'を持つSQL文があります。TSQL、動的Where句
渡されたレベルごとに5つの異なるSQL文を書きたくありません。私はケーススタディでただ1つのSQLステートメントを考えました。
また、動的SQLの使用を検討することもできますが、それはちょっと面倒です。
以下は私の例です(正常な順序ではありません) - 提案はありません。
この
は、MS SQL Serverのである2012Declare @Level int = 1;
SELECT *
FROM [HR_MIS_STAGING].[dbo].[XXXXX_Promotions_201510_201610]
where
case @Level when 1 then
appt_no = '01';
case @Level when 2 then
org = '15';
case @Level when 3 then
race = '1';
case @Level when 4 then
Gender= 'M';
case @Level when 5 then
Prov= 'Nat';
END
[この](https://stackoverflow.com/a/10260297/92546)の答えと一致しない場合、あなたは何も表示したくない場合'on'または' where'節で 'case' _expression_を使う方法を示しています。パフォーマンスはパラメータスニッフィングのためにプリコンパイルされたステートメントで問題になる可能性があります。 – HABO