- PR -

SQL:最大件数の抽出について

1
投稿者投稿内容
もにゅめん
会議室デビュー日: 2006/09/07
投稿数: 3
投稿日時: 2006-09-07 13:57
いつもお世話になっております。
Oracle(9i)のSQLについて質問があります。
以下のテーブルについて、

★テーブルAA
列A 列B 列C
00001 311 1
00001 21 15
00002 1 2
00001 14 1
00442 5 2
00442 2 12
00520 11 1

列A単位で列Cの最大値であるレコードを、
全列表示させるSQLをご教授いただけないでしょうか?

上記の例では、

◎結果
列A 列B 列C
00001 21 15
00002 1 2
00442 2 12
00520 11 1

となります。
欲を言えば、列A単位で列Cが同じ値の場合、
列Aのいちばん若い(小さい)コードのみを
抽出したいのですが、複数表示されても
かまいません。

基本的なことなのかもしれませんが、
すみませんが、ご教授よろしくお願いします。
ue
ぬし
会議室デビュー日: 2005/05/07
投稿数: 581
お住まい・勤務地: 広島市
投稿日時: 2006-09-07 16:40
こんにちは。

引用:

欲を言えば、列A単位で列Cが同じ値の場合、
列Aのいちばん若い(小さい)コードのみを
抽出したいのですが、複数表示されても
かまいません。


この部分を解釈できているか不安ですが、副問い合わせを利用した SQL でいかがでしょうか。

コード:
SELECT DISTINCT テーブルAA.列A, テーブルAA.列B, テーブルAA.列C
FROM (
SELECT 列A, MAX(列C) AS 列C
FROM テーブルAA
GROUP BY 列A
) tmp, テーブルAA
WHERE テーブルAA.列A = tmp.列A
AND テーブルAA.列C = tmp.列C
ORDER BY テーブルAA.列A


_________________
上本亮介 (ue) @ わんくま同盟
Microsoft MVP for VSTO (Jul 2008 - Jun 2009)
Hello Another World!
.NET 勉強会 / ヒーロー島
もにゅめん
会議室デビュー日: 2006/09/07
投稿数: 3
投稿日時: 2006-09-07 16:59
すばやいご返答ありがとうございます。
さっそく確認します。
(別作業のため、確認ができるのは後になりそうです)

※質問時の表がずれてしまいましたね。。。
 閲覧して頂いた皆さん、見えにくくてすみませんでした。
コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2006-09-08 09:52
相関副問合せ

select t1.a, t1.b, t1.c from AA t1 where t1.c = all (select max(c) from AA t2 where t1.a = t2.a) order by a;
明智重蔵
大ベテラン
会議室デビュー日: 2005/09/05
投稿数: 127
投稿日時: 2006-09-08 10:41
引用:

コブラさんの書き込み (2006-09-08 09:52) より:
相関副問合せ

select t1.a, t1.b, t1.c from AA t1 where t1.c = all (select max(c) from AA t2 where t1.a = t2.a) order by a;



allは不要
1

スキルアップ/キャリアアップ(JOB@IT)