1. はじめに
- SQLの条件を動的に変更したい
2. 開発環境
- SQL Server 2022
3. テストデータ
- Users
No | Name | Gender | Amount |
---|---|---|---|
1 | 山田 太郎 | M | 100 |
2 | 鈴木 花子 | F | 200 |
3 | 佐藤 次郎 | M | 300 |
4 | 田中 三郎 | M | 400 |
4. SQL文
4.1.CASE文でカラムを指定する場合
- CASE式の結果でカラムに対する抽出条件を分岐できる
- 複数条件の場合、WHERE句はAND条件で記載する
SELECT
*
FROM
Users
WHERE
(
-- カラム名の指定あり(Gender=M)
CASE Amount >=
WHEN Gender = 'M' THEN 300
ELSE '*' -- 全件対象
END
)
AND (
-- カラム名の指定あり(Gender=F)
CASE Amount >=
WHEN Gender = 'F' THEN 200
ELSE '*' -- 全件対象
END
);
4.2.CASE文でカラムを指定しない場合
- CASE式の結果を論理値(0または1)で判定し、その結果を抽出条件にする
- 複数条件の場合、WHERE句はOR条件で記載する
SELECT
*
FROM
Users
WHERE
(
-- カラム名の指定なし(Gender=M)
CASE
WHEN Gender = 'M'
AND Amount >= 300
THEN 1
ELSE 0
END
) = 1
OR (
-- カラム名の指定なし(Gender=F)
CASE
WHEN XIE = 'F'
AND Amount >= 200
THEN 1
ELSE 0
END
) = 1;
5. 参考文献