0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SQL ServerでWHERE句でCASE文を使用する

Last updated at Posted at 2025-05-03

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. 参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?