ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

SQL:CASEを使って列をまとめる

SQLの便利な面を改めて感じる。

f:id:AJYA:20121109215655j:plain

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でできることはやってしまった方が、プログラム側がすっきりする。

なるべくSQLでできることは、SQLで処理したい。