SQLのCASE式について学んだことをまとめます。
CASE式の概要
CASE式は簡単に言えば「ラベルの読み替え」をやっているに過ぎないのです。
しかし、集約関数などの技術と一緒に使えば以下のことなどが可能です。
- ラベルをまとめて読み替え
- 「行持ち」から「列持ち」への変換
- CHECK制約での条件分岐
- UPDATE文で条件分岐させて更新
- EXISTS述語を利用したクロス表の作成
CASE式の構文
単純CASE式のほうが簡潔に記載できますが、単純CASE式で書けるものは検索CASE式でも書けるため
検索CASE式を使うほうが無難でしょう。
また、ELSE句は必ず書くようにする。
単純CASE式
単純CASE式
CASE sex
WHEN 1 THEN '男性'
WHEN 2 THEN '女性'
ELSE 'その他' END
検索CASE式
検索CASE式
CASE
WHEN sex = 1 THEN '男性'
WHEN sex = 2 THEN '女性'
ELSE 'その他' END
CASE式の使用箇所
CASE式は評価すると一つの値になる式のため、以下の箇所のようなどこにでも記載することができます。
- SELECT句
- WHERE句
- GROUP BY句
- HAVING句
- ORDER BY句
- PARTITION BY句
- CHECK制約の中
- 関数の引数
- 述語の引数
- 他の式の中(CASE式自身も含む)