プロが教えるわが家の防犯対策術!

下記の事を実現するSQL文がどうしても分からず困り果てています。。。。
ご回答の程お願い致します。

テストテーブルにはコード、枝番、年月日の3種類のデータがあります。
テストテーブルはコードと枝番を主キーとします。
1つのコードに対して、重複しない枝番が複数登録可能となっています。
取得するデータはコード、枝番、年月日の3種類のデータを取得し、同じコードの中で年月日が一番若いデータのみ取得したいです。

同じような質問で
http://okwave.jp/qa4089797.html
と言うURLの回答を参考に
SELECT コード , 枝番 , 年月日 FROM テストテーブル where (コード , 年月日) in (SELECT コード , MIN(年月日) FROM テストテーブル GROUP BY コード );
というSQL文を考えたのですが、
コードは同じで枝番は違うが年月日が同じデータがあると
望んでいない結果にならず、困り果てています・・・・


■テストテーブルのデータ

コード │ 枝番 │ 年月日
-----------------------------
1 │ 1 │ 2009-01-01
1 │ 2 │ 2009-01-03
2 │ 1 │ 2009-02-15
2 │ 2 │ 2009-02-10
2 │ 3 │ 2009-02-20
3 │ 1 │ 2009-03-15
3 │ 2 │ 2009-03-10
3 │ 3 │ 2009-03-05
3 │ 4 │ 2009-03-01

↓↓↓

■望んでいる取得結果

コード │ 枝番 │ 年月日
-----------------------------
1 │ 1 │ 2009-01-01
2 │ 2 │ 2009-02-10
3 │ 4 │ 2009-03-01

A 回答 (1件)

PostgreSQL 8.3.7 で試してみました。



SELECT DISTINCT ON (コード) コード , 枝番 , 年月日 FROM テストテーブル WHERE (コード , 年月日) IN (SELECT コード , MIN(年月日) FROM テストテーブル GROUP BY コード );

でどうでしょう。
    • good
    • 2
この回答へのお礼

うおおお、要望通りの結果ができました!
ちゃんと確認していないのですが、恐らく大丈夫そうです!
本当に助かりました!
ありがとうございます!!

お礼日時:2009/04/06 17:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A