• ベストアンサー

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

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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)

回答No.1

パフォーマンス度外視で回答します。 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 これでいかがでしょう?

関連するQ&A