SQL:CASEを使って列をまとめる
SQLの便利な面を改めて感じる。
photo credit: Alexander Becker via photopin cc
ことの起こり
日付型のカラムdate1とdate2があり、date1はNULLの場合があるが、date2は必ず値が入っている。
date1に値があればdate1を使い、NULLだったらdate2を使って、ソートをしなければならなくなった。
どうやればできるか
1列にしてしまえばソートはできる。
今回はSQL Serverだったので、CASEを使って以下のようにすればソートできた。
SELECT *, CASE WHEN date1 IS NOT NULL THEN date1 ELSE date2 END AS date_col FROM hode_table ORDER BY date_col
上記のようなことをしなくても、プログラム側で値を取得した後に判定してもいいが、SQLでできることはやってしまった方が、プログラム側がすっきりする。