- ベストアンサー
OracleSQLでのOrder byについて
Order byについて教えてください。 下記の様な状態にOrder Byするにはどのようにしたらよいでしょうか? ・基本的にはA列でソートする ・BとCの組み合わせで同じ物があれば、そのデータの直下にソートできる A B C ----------------- 111 123 001 111 124 001 222 234 001 333 234 001 222 345 001 222 456 001 333 135 001 333 246 001
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
回答番号:No.1の者です。 補足といいますか、こちらの方が パフォーマンスはよいかもしれません。 select HOGE.A ,HOGE.B ,HOGE.C from TBL_HOGE join ( select min(A) as A ,B from TBL_HOGE group by B ) TMP on TMP.B = HOGE.B order by TMP.A ,HOGE.B ご参考までに。
その他の回答 (1)
- seimurakam
- ベストアンサー率61% (21/34)
パフォーマンス度外視で回答します。 select A ,B ,C ,( select min(A) from TBL_HOGE TMP where TMP.B = HOGE.B and TMP.C = HOGE.C ) as SORT_KEY_NAIBU_A from TBL_HOGE order by SORT_KEY_NAIBU_A ,B ,C イメージとしてはこんなテーブルを作ってソートしています。 SORT_KEY_NAIBU_Aは、現在のレコードと同じB,C値を持つレコードのうち、 最小となるAを取得しています。 A B C SORT_KEY_NAIBU_A ------------------------------------ 111 123 001 111 111 124 001 111 222 234 001 222 333 234 001 222 222 345 001 222 222 456 001 222 333 135 001 333 333 246 001 333 これでいかがでしょう?