ある項目が初出した行を求める2

命題

以下のようなテーブルがある。

 id |     dt     | num
----+------------+-----
 a  | 2011-04-01 |   1
 a  | 2011-02-01 |   2
 a  | 2011-06-01 |   3
 b  | 2011-02-01 |   2
 c  | 2011-01-01 |   4
 c  | 2011-02-01 |   3

この時、idに注目して、あるidのレコードの内、dtが一番早いレコードのnumを抽出したい。

解答

SELECT id, (SELECT num FROM t1 WHERE dt <= MIN(x.dt) AND id = x.id) AS num FROM t1 x GROUP BY id ORDER BY id;
 id | num
----+-----
 a  |   2
 b  |   2
 c  |   4

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

Last-modified: 2011-12-22 (木) 10:31:33 (2802d)