![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
いつもお世話になります。
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で質問しましょう!
似たような質問が見つかりました
- Oracle SQLについて教えて下さい。 主キーを持ったカラムを主キーの機能を持たせたまま カンマ区切りで文字列 1 2023/03/27 22:47
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- MySQL SQLです。下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「昨年の各月の総降 1 2023/07/01 00:32
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- システム 帳票出力を行う単体テストのテストデータが作成できません 2 2023/08/26 21:26
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
GROUP BYを行った後に結合した...
-
select句副問い合わせ 値の個...
-
select insertで複数テーブルか...
-
unionの結果は集計はできないで...
-
MERGE文を単体テーブルに対して...
-
OracleのSQLについて質問があり...
-
SELECTの結果で同一行を複数回...
-
固定値を含む結合と複数テーブ...
-
外部結合とor条件混在の記述方法
-
updateの一括実行
-
他のテーブルを参照した値はupd...
-
データベースの基礎かもしれま...
-
マテビューのNOTNULL設定について
-
半角英数字混在データから数字...
-
副問い合わせのinsert文
-
SQL GROUPで件数の一番多いレコ...
-
複数のテーブルに対してのleft ...
-
SQL・・・分かりません。
-
複数テーブルのMAX値の行データ...
-
SET句内で複数の条件を指定して...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
GROUP BYを行った後に結合した...
-
select句副問い合わせ 値の個...
-
select insertで複数テーブルか...
-
SELECTの結果で同一行を複数回...
-
MERGE文を単体テーブルに対して...
-
他のテーブルを参照した値はupd...
-
SET句内で複数の条件を指定して...
-
固定値を含む結合と複数テーブ...
-
SQL GROUPで件数の一番多いレコ...
-
oracleの分割delete
-
外部結合とor条件混在の記述方法
-
unionの結果は集計はできないで...
-
複数テーブルのMAX値の行データ...
-
unionでマージした副問合せを結合
-
集計後の数値が倍になる
-
構成比を求めるSQL文につきまして
-
COUNTの取得方法(?)について...
-
SQLの書き方(チェックボックス)
-
結合と副問い合わせの違い
-
DELETE 文とEXISTSの使い方につ...
おすすめ情報