SQLでCASEステートメントを使って条件に応じた値を返す方法

SQLのCASEステートメントは、プログラミング言語におけるif-else文に似た機能を提供し、データベース内で条件に応じて異なる値を返します。この記事では、CASEステートメントの基本的な使い方から高度なテクニックまで、具体的な例を交えて詳しく解説します。

目次

CASEステートメントの基本

CASEステートメントは、与えられた条件に基づいて特定の値を返すSQLの構文です。一般的な形は以下のようになります。

CASE 
  WHEN 条件1 THEN 値1
  WHEN 条件2 THEN 値2
  ...
  ELSE その他の値
END

簡単な例

例えば、顧客テーブルがあり、それぞれの顧客にステータスを割り当てたいとします。ステータスは「新規」「一般」「VIP」の3種類で、購入金額によって決まるとします。

購入金額ステータス
0 ~ 1000円新規
1001円 ~ 5000円一般
5001円以上VIP
テーブル1:購入金額によるステータスの分類

このような場合のSQLクエリは以下のようになります。

SELECT name, 
  CASE 
    WHEN amount <= 1000 THEN '新規'
    WHEN amount <= 5000 THEN '一般'
    ELSE 'VIP'
  END as status
FROM customers;

高度な使い方

CASEステートメントは非常に柔軟であり、多くの場面で使うことができます。

複数条件の組み合わせ

複数のカラムを考慮に入れたい場合もCASEステートメントが有用です。

購入金額会員年数ステータス
5001円以上1年未満VIP新規
5001円以上1年以上VIP継続
テーブル2:購入金額と会員年数によるステータスの分類

この場合のSQLクエリは以下のようになります。

SELECT name, 
  CASE 
    WHEN amount >= 5001 AND membership < 1 THEN 'VIP新規'
    WHEN amount >= 5001 AND membership >= 1 THEN 'VIP継続'
    ELSE 'その他'
  END as status
FROM customers;

まとめ

CASEステートメントはSQLで条件に応じて異なる値を返すための非常に強力なツールです。基本的な使い方から複雑な条件分岐まで、多くの場面で活躍します。特に、ビジネスロジックが複雑な場合や、データ分析で異なるケースを分けて評価したい場合には、CASEステートメントが非常に有用です。

コメント

コメントする

目次