SQLにはCASE句を代表とする様々な条件式が存在するが、今回は値がNullだった場合に別の値に置き換えるCOALESCE関数を紹介する。
まず、以下の例を見てみよう。
SELECT CAST(request_time as date) as access_date , prefecture as prefecture_name , COUNT(*) as pv FROM access_log_wide as a LEFT JOIN customer_locations as l ON a.customer_id = l.customer_id GROUP BY access_date , prefecture_name ORDER BY access_date ;
ある二つのテーブルを結合して、日・都道府県ごとのPV数をクロス集計したクエリだが、都道府県の列に一部Null値が含まれている。

例えばNullを「不明」など別のテキストに置き換えたい場合などに、COALESCE関数が有効だ。
先ほどのクエリを以下のように書き直してみる。
SELECT CAST(request_time as date) as access_date , COALESCE(prefecture, '不明') as prefecture_name , COUNT(*) as pv FROM access_log_wide as a LEFT JOIN customer_locations as l ON a.customer_id = l.customer_id GROUP BY access_date , prefecture_name ORDER BY access_date ;
3行目でCOALESCE関数が使われており、第一引数に対象のカラム名を、第二引数にNullと置き換える代替値を指定する。
これを実行するとNullが「不明」に替わり、以下の結果を得ることができる。
