• ベストアンサー

SQL書けますか?

field1,field2がありまして、データが4件あるとします。 データの内容はそれぞれ、 1,B 2,C 3,A 4,B が入っています。 この時selectで 1,B 4,B 2,C 3,A と言う順番で取ってきたい場合どのように書けばいいのでしょうか? field1の昇順が基本だけど、field2が同一の場合優先順位関係なしに連続して表示したいんです。 よろしくお願いします。

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

  • ベストアンサー
回答No.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; で良いのでは? 違うのであれば、どういうデータをどう表示したいか具体的に書いてください。 サンプルにない、説明に出てこない要素は対処のしようがありません。

yamadachan
質問者

お礼

ありがとうございます。 k_o_r_o_c_h_a_nさんの回答をヒントに色々試してたら出来ました。

その他の回答 (1)

回答No.1

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; の方が効率が良いですけどね。

yamadachan
質問者

補足

回答ありがとうございます。 Field1が同値だった場合、同値のものが間に入り込んでしまうんですが対処法は何かありますでしょうか?

関連するQ&A