[pgsql-jp: 32546] Re: ある列のデータが同一で別のある列のデータが最大なものの抽出

馬場 泰明 ( 川上) kawakami @ mxe.nes.nec.co.jp
2004年 3月 23日 (火) 15:06:13 JST


はじめまして。馬場と申します。
お世話になります。

すみません、oracle でしか動作確認していないのですが、
以下の SQL ではいかがでしょうか。

SQL> desc test
 名前                                      NULL?    型
 ----------------------------------------- -------- ----------------------------
 ID                                                 NUMBER(3)
 TRAI_NO                                            NUMBER(3)

SQL> select * from test;

        ID    TRAI_NO
---------- ----------
         1          1
         2          1
         1          2
         3          1
         4          1
         2          2
         2          3

7行が選択されました。

SQL> select * from test
  2  where (id,trai_no) in (select id,max(trai_no) from test group by id);

        ID    TRAI_NO
---------- ----------
         1          2
         2          3
         3          1
         4          1

もしも PostgreSQL 固有のエラーで困っていらっしゃるのでしたら
すみません。

以上よろしくお願い致します。

/ ばば やすあき

2004/03/23 14:51:22 +0900にPochi <Pochi @ ppm-ja.com>さんに頂いた
「[pgsql-jp: 32544] ある列のデータが同一で別のある列のデータが最大なものの抽出」への返事です。
>Pochiといいます。
>
>ID	Trai_no	(他の列)
>1	1	(データ)
>2	1	(データ)
>1	2	(データ)*
>3	1	(データ)*
>4	1	(データ)*
>2	2	(データ)
>2	3	(データ)*
>
> というテーブルを作っています(言うまでもないかもしれませんが、その他の
>列はまとめて出してます)。IDとTrai_noであわせてprimary keyとしています。
>
> ここで、同一ID(=Trai_noが一番大きい)の最新のデータを取り出したいのです
>(*が付いている行のデータ)。
> それを一行のselect文で出したい(最新のデータだけで構成されるviewを作り
>たい)のですがエラーが出てどうしても上手く行きません。
>
> みなさんのお知恵をお貸し頂ければと思い投稿しました。よろしくお願いいた
>します。
>
> FAQなような気もしましたが、的確な検索キーワードが分からず、いくつか試
>してみたのですが、出てきませんでした。
>
>なお、PostgreSQLのバージョンは7.1.3です(ふ、古い・・・)。
>
>-- 
>Pochi Pochippm-ja.com
>



pgsql-jp メーリングリストの案内