命題

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

  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