こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

select の中の select

SQL文で3つのデータを表示させようとしています。

ID、ポイント、登録日というデータです。

データベースには
ID POINT IN_DATE
4 100 2004/10/01 ・・・
4 150 2004/10/31 ・・・
5 200 2004/09/01 ・・・
3 150 2004/10/31 ・・・
3 200  2004/10/01


このように入っている場合に、
IDが同じ物はグループ化して、その中で登録された一番新しいデータを各々抽出したいのですが、うまくいきません。
この場合に表示されるデータは
4 150 2004/10/31 ・・・
5 200 2004/09/01 ・・・
3 150 2004/10/31 ・・・

です。何かよい方法があれば教えてください。

投稿日時 - 2004-11-04 20:52:42

QNo.1070087

すぐに回答ほしいです

質問者が選んだベストアンサー

私はインラインビューが見やすいので、それでやります。
インラインビューは比較的最近のPostgreSql、SQLServer、Oracleで実行可能です。

select a.id,a.point,a.in_date from table_a as a,
(select id,in_date from table_a group by id) as sub_a
where a.id = sub_a.id and a.in_date = sub_a.in_date
order by id

副問い合わせでも出来ますが、慣れるとこっちのほうがすっきりします。
(select ...) as sub_aというのは、()の中のselectの結果を一時的にsub_aというビューと見立てて利用しています。

投稿日時 - 2004-11-04 21:46:42

お礼

ありがとうございます。とてもわかりやすかったです。

投稿日時 - 2004-11-05 10:56:33

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問