- ベストアンサー
SQL書けますか?
field1,field2がありまして、データが4件あるとします。 データの内容はそれぞれ、 1,B 2,C 3,A 4,B が入っています。 この時selectで 1,B 4,B 2,C 3,A と言う順番で取ってきたい場合どのように書けばいいのでしょうか? field1の昇順が基本だけど、field2が同一の場合優先順位関係なしに連続して表示したいんです。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>Field1が同値だった場合、同値のものが間に入り込んでしまうんですが対処法は何かありますでしょうか? 言ってることがよくわからないけど・・ select T1.* from T T1,(select Field2,min(Field1) skey from T group by Field2) T2 where T1.Field2=T2.Field2 order by T2.skey,T1.Field2,T1.Field1; なり select Field1,Field2 from (select T.*,min(Field1) over(partition by Field2 oder by Field1) skey from T) order by skey,Field2,Field1; で良いのでは? 違うのであれば、どういうデータをどう表示したいか具体的に書いてください。 サンプルにない、説明に出てこない要素は対処のしようがありません。
その他の回答 (1)
- k_o_r_o_c_h_a_n
- ベストアンサー率55% (526/942)
select T1.* from T T1,(select Field2,min(Field1) skey from T group by Field2) T2 where T1.Field2=T2.Field2 order by T2.skey,T1.Field1; とかで良いかと思います。 分析関数が使えるなら・・ select Field1,Field2 from (select T.*,min(Field1) over(partition by Field2 oder by Field1) skey from T) order by skey,Field1; の方が効率が良いですけどね。
補足
回答ありがとうございます。 Field1が同値だった場合、同値のものが間に入り込んでしまうんですが対処法は何かありますでしょうか?
お礼
ありがとうございます。 k_o_r_o_c_h_a_nさんの回答をヒントに色々試してたら出来ました。