1-1 CASE式のススメ

既存のコード体系を新しい体系に変換して集計する

GROUP BY句でCASE式を使うことで、集計単位を自由に設定できる。動的な変更もできる。

PostgreSQL,MySQLでは、SELECT句のCASE式に別名をつけて、GROUP BY句で参照できる。※標準違反

異なる条件の集計を1つのSQLで行う

SQLの結果を二次元表形式に整形できる。クロス表の形式で結果が出力される。

WHERE句で条件分岐させるのは素人のやること。プロはSELECT句で分岐させる。

CHECK制約で複数の列の条件関係を定義する

CHECK制約でCASE式が使える。 論理積よりもゆるい条件法で記述できる。

条件を分岐させたUPDATE

複数のUPDATEを、CASE式を使って1つのSQLで実現できる。 退避用の値を用意しなくてすむ。

テーブル同士のマッチング

DECODE関数などと比べると、CASE式は式の中で式を評価できる(BETWEEN, Like, >, < etc..といった述語群を使える)。

CASE式の中で集約関数を使う

集約結果に対する条件をHAVING句ではなく、CASE式を使うことでSELECT句で書くことができる。

HAVING句で条件分岐させるのは素人のやること。プロはSELECT句で分岐させる。

まとめ

CASE式は、列名や定数を書ける場所には常に書くことができる。 便利だからCASE式を使おう。