ある項目が初出した行を求める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