質問: group by , max の使用法に関して いつもお世話になります。 group by , max の使用法に関して質問です。 usercdとkyoutunoでグルーピングをしてseqの最大値のレコードを抽出しようとしています。 以下のようなsql文の場合ですとbikouがないレコードを抽出する事が出来るかと思います。 【select usercd , kyoutuno , max(seq) from テーブル1 group by usercd , kyoutuno】 そこで、bikou も同時に抽出したいのですが、bikouを選択列に入れると「group byの式ではありません。」のエラーが出ます。 「そりゃそうだ」だと思うのですが、どうのようにすればsql文を作れば結果のようなレコードを抽出出来るのでしょうか? よろしくお願いします。 ◆テーブル1のデータ usercd kyoutuno seq bikou ------------------------------------- 100 100 1 あああああ 100 100 2 いいいいい 100 100 3 あいうえお 222 200 1 aaaaa 222 200 2 aaaaaa 3333 100 1 うううううう 44444 100 1 ううううう 44444 100 2 えええ ◆結果 usercd kyoutuno seq bikou ------------------------------------- 100 100 3 あいうえお 222 200 2 aaaaaa 3333 100 1 うううううう 44444 100 2 えええ ■oracleのバージョン oracle9i
回答: ↓でどうでしょうか?試してないのでちゃんと動くかわかりませんが・・・。 select * from テーブル1 t1 where t1.seq = ( select max(t2.seq) from テーブル1 t2 where t2.usercd = t1.usercd and t2.kyoutuno = t1.kyoutuno )