🐈
SQL | 制御フロー構文 | CASE
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