登録日と更新日のフィールドがあって、その中で一番新しい日付を一発でセレクトするクエリー(CASE文とMAX)

登録日が created で、更新日が modified で、データを新規登録した時にね、
created には insert するけど、modified にはしない。
本当に編集した時だけ modified に入れるようなプログラムになってたとするじゃないですか。

そうするとデータはこんな感じになる訳で。

          created           |          modified          
----------------------------+----------------------------
 2009-03-17 10:18:24.792449 | 2009-03-17 10:32:55.900294
 2009-03-25 19:32:18.205694 | 
 2009-03-26 14:44:18.787866 | 
 2009-03-30 16:56:56.128813 | 
 2012-06-22 18:26:11.540513 | 
 2012-06-23 12:18:09.649044 | 
 2012-06-22 18:26:37.815316 | 2012-06-26 15:07:45.34223
 2012-06-21 12:46:03.151537 | 2012-06-26 16:44:05.811683
 2012-06-26 19:05:44.473284 | 2012-06-26 20:15:18.196717
 

modified は NULL になってるデータがある訳です。

こういう状態で、更新があった一番新しい日付をセレクトせよ、ってことなんですが。。。


 SELECT MAX(CASE WHEN modified IS NULL THEN created ELSE modified END) AS dates FROM items;
 

これでこうなる。

           dates            
----------------------------
 2012-06-26 20:15:18.196717
(1 row)
まあ、最初っから両方入れとけよって話ですね。