![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
SQL(oracle)での並べ替えで質問がございます。
TABLE:AAA
NO, NAM,GNo, DATE
------------------
1, abc, 3, 09/01
2, bcd, 2, 08/25
3, cde, 2, 08/23
4, def, 3, 09/05
5, efg, 1, 09/03
6, fgh, 3, 08/21
のようなテーブルがあったときに、下記条件で並べ替えを
したいと思っています。
1.GNo毎に最小のDATEを抽出し、各Gnoの最小のDATEのうち
小さいGNoのグループでソート。
2.1で同一GNo内ではDATEが小さい順にソート。
つまり、上記の例では、各GNoの最小のDATEは、
1・・・09/03
2・・・08/23
3・・・08/21
なので、これからDATEの小さい順に、GNoが
3、2、1の順にソートをします。各GNo毎にもDATEが小さい順に
ソートをするので、結果として、
NO, NAM,GNo, DATE
------------------
6, fgh, 3, 08/21
1, abc, 3, 09/01
4, def, 3, 09/05
3, cde, 2, 08/23
2, bcd, 2, 08/25
5, efg, 1, 09/03
のような順番にしたいのです。この結果のようにするには、
どのようなSQLにすればよいでしょうか?
よろしくお願いいたします。
No.2
- 回答日時:
#1どののSQLだと、同一の最小DATEを持つGNoがあるとき、くしゃくしゃな結果に成るように思うんですよね。
select x."NO",x."NAM",x."GNo",x."DATE"
from
AAA x,
(
select "GNo",min(R) sortkey
from
(select "GNo",row_number() over(order by "DATE","GNo") R from AAA)
group by "GNo"
) y
where x."GNo"=y."GNo"
order by y.sortkey,x."DATE"
;
とか
select x."NO",x."NAM",x."GNo",x."DATE"
from
AAA x,
(
select "GNo",min(R) sortkey
from
(
select "GNo",rownum R
from (select "DATE","GNo" from AAA order by "DATE","GNo")
)
group by "GNo"
) y
where x."GNo"=y."GNo"
order by y.sortkey,x."DATE"
;
みたいに面倒なことしないと。
ご回答どうもありがとうございます。
すみません、ちょっと試せなかったのですが、
ANo.3さんのやり方でうまくいきました。
どうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- MySQL 2つのカラムでgroup by の動作をさせるSQLの構文を教えてください。 3 2022/05/19 19:02
- その他(プログラミング・Web制作) pythonのpandasのcsvの外部結合(outer_join)した際に列が想定とは異なる事象 1 2022/05/25 13:23
- Excel(エクセル) 結合セルのソートについて 5 2022/04/22 11:57
- PHP プログラムコードを入力する場合改行してもいいですか? 2 2022/10/02 16:05
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- 英語 to date 2 2023/05/23 23:22
- UNIX・Linux cronの@rebootでのdateコマンドの実行につきまして 2 2023/06/11 16:23
- Visual Basic(VBA) Excel VBAで並べ替えをしたい 3 2023/02/25 09:31
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
2つの列が同じ値の行を取得するSQL
-
並び替えた後の表の結合
-
Oracleで「文字が無効です」の...
-
"と'の違いについて。
-
文字2桁、3桁交じりの文字列...
-
SQLローダーCSV取込で、囲み文...
-
select文の実行結果に空白行を...
-
1の行を固定した上でVBAを用い...
-
テーブルの最後(最新)のレコー...
-
ファイルの漢数字の順番につい...
-
AccessのSQL文で1件のみヒット...
-
単一グループのグループ関数で...
-
レコードの登録順がおかしい
-
where句中のtrim関数について
-
小数点以下桁数が最大の値に小...
-
count関数の値をwhere句で使用...
-
月末日のみソートしたい
-
並べ替えについて
-
BLOBやCLOBのパフォーマンスを...
-
1レコード全てを改行なしで表...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Oracleで「文字が無効です」の...
-
2つの列が同じ値の行を取得するSQL
-
枝番の最大値とその前のデータ...
-
UPDATE文のWHERE句にファンクシ...
-
PL/SQLで…SQLの実行結果を変数...
-
並び替えた後の表の結合
-
同じテーブルからviewを作成し...
-
急募「セレクトしてセレクト」
-
SQL(oracle)での並べ替え
-
最新かつ最大の値を求める
-
"と'の違いについて。
-
Oracle でのSQL文について
-
SQLローダーCSV取込で、囲み文...
-
select文の実行結果に空白行を...
-
テーブルの最後(最新)のレコー...
-
単一グループのグループ関数で...
-
【PL/SQL】FROM区に変数を使う方法
-
SQL*Loader Append
-
count関数の値をwhere句で使用...
-
where句中のtrim関数について
おすすめ情報