🐈

SQL | 制御フロー構文 | CASE

2025/03/02に公開

SQL

こちらも参考に。

"CASE" 制御フロー構文の概要

  • 条件に基づいて異なる値を返すための制御フロー構文。
  • SELECT文、UPDATE文、DELETE文など、さまざまなSQL文で使用できる。
  • CASE文には2つの形式がある: 単純CASE, 検索CASE
  • NULLの扱い: CASE文のELSE部分は省略可能だが、ELSE部分を省略した場合、条件に一致しない場合は NULL が返される。必要に応じてELSEを使う。
  • 1つのクエリ内で複数のCASE文を使用することもできる。これにより、異なる列に対して異なる条件を設定できる。

単純CASE

  • 単純CASEは、特定の列の値に基づいて異なる結果を返す。
CASE column_name
    WHEN value1 THEN result1
    WHEN value2 THEN result2
    ELSE default_result
END
  • 例えば、月の番号に応じて月の名前を返す場合:
SELECT month,
       CASE month
           WHEN 1 THEN 'January'
           WHEN 2 THEN 'February'
           WHEN 3 THEN 'March'
           ELSE 'Other'
       END AS month_name
FROM sales_data;

このクエリでは、month列の値が1の場合は「January」、2の場合は「February」、3の場合は「March」を返し、それ以外の場合は「Other」を返す。

検索CASE

  • 検索CASEは、複数の条件を評価し、最初に真となる条件に基づいて結果を返す。
CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    ELSE default_result
END
  • 例えば、売上に基づいて売上のカテゴリを分類する場合:
SELECT sales,
       CASE
           WHEN sales < 100 THEN 'Low'
           WHEN sales BETWEEN 100 AND 200 THEN 'Medium'
           WHEN sales > 200 THEN 'High'
           ELSE 'Unknown'
       END AS sales_category
FROM sales_data;

このクエリでは、salesの値が100未満の場合は「Low」、100以上200以下の場合は「Medium」、200を超える場合は「High」を返します。どの条件にも当てはまらない場合は「Unknown」を返す。

Discussion