いつもお世話になります。
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
No.3ベストアンサー
- 回答日時:
9iスタンダード以降なら、探査回数が一回で済むよう分析関数を使った方が効率的な気がします。
select USERID,KYOUTUNO,SEQ,BIKOU
from
(
select x.*,row_number() over(partition by USERID,KYOUTUNO order by SEQ desc) R
from TABLE x
)
where R=1;
分析関数が使えないバージョン・エディションなら、
select * from TABLE
where
(USERID,KYOUTUNO,SEQ)
in
(select USERID,KYOUTUNO,max(SEQ) from TABLE);
のようなサブクエリを使った解決策になります。
No.2
- 回答日時:
not exists を使って
select * from tbla a1
where not exists
( select 1 from tbla a2
where a1.usercd = a2.usercd
and a1.kyoutuno = a2.kyoutuno
and a1.seq < a2.seq );
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
GROUP BYを行った後に結合した...
-
SQLの書き方(チェックボックス)
-
他のテーブルを参照した値はupd...
-
SELECTの結果で同一行を複数回...
-
外部結合とor条件混在の記述方法
-
select句副問い合わせ 値の個...
-
select insertで複数テーブルか...
-
unionでマージした副問合せを結合
-
PL/SQL
-
否定条件回避
-
unionの結果は集計はできないで...
-
3つ以上の表の外部結合について
-
マテビューのNOTNULL設定について
-
Oracleでの文字列連結サイズの上限
-
SELECTで1件のみ取得するには?
-
ADO VBA 実行時エラー3021
-
Accessで別テーブルの値をフォ...
-
Excelでセルの書式設定を使用し...
-
DataGridViewの、選択されてい...
-
Access終了時の最適化が失敗?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
GROUP BYを行った後に結合した...
-
select insertで複数テーブルか...
-
select句副問い合わせ 値の個...
-
SELECTの結果で同一行を複数回...
-
固定値を含む結合と複数テーブ...
-
MERGE文を単体テーブルに対して...
-
外部結合とor条件混在の記述方法
-
他のテーブルを参照した値はupd...
-
SET句内で複数の条件を指定して...
-
複数テーブルのMAX値の行データ...
-
SQLの書き方(チェックボックス)
-
SQL GROUPで件数の一番多いレコ...
-
unionの結果は集計はできないで...
-
oracleの分割delete
-
unionでマージした副問合せを結合
-
集計後の数値が倍になる
-
COUNTの取得方法(?)について...
-
updateの一括実行
-
サブクエリ同士をLEFT JOIN
-
DELETE 文とEXISTSの使い方につ...
おすすめ情報