並び替えで悩む!必見の方法とは?

このQ&Aのポイント
  • 並べ替えについて悩んでいる場合、ORDER BY句を使用することで解決できます。
  • 例えば、A、B、Cというフィールドがあり、それぞれのデータが入っている場合、ORDER BY AとするとAの値に基づいて並び替えられます。
  • また、ORDER BY句を複数のフィールドに指定することもでき、指定した順番に並び替えられます。
回答を見る
  • ベストアンサー

並び替えで教えて下さい。

並べ替えで悩んでます。ご教授下さい。 下記のようなA、B、Cというフィールドがあり それぞれデータが入っているとします。 取得する際の並び替えですが、 A B C --------------------- aaa 1 6 bbb 1 5 ccc 1 4 aaa 2 4 bbb 2 6 ccc 2 5 ORDER BY Aとすると・・・ aaa 1 6 aaa 2 4 bbb 1 5 bbb 2 6 ccc 1 4 ccc 2 5 ORDER BY Bとすると・・・ aaa 1 6 bbb 1 5 ccc 1 4 aaa 2 4 bbb 2 6 ccc 2 5 ORDER BY Cとすると・・・ aaa 2 4 ccc 1 4 bbb 1 5 ccc 2 5 aaa 1 6 bbb 2 6 となります。 私がやりたいのは下記の順で並べ替えしたいのです。 ccc 1 4 ccc 2 5 bbb 1 5 bbb 2 6 aaa 1 6 aaa 2 4 つまりORDER BY B、Cの結果の1つ目のレコードの AでGROPE BYするような感じです。 方法をご教授頂きたいと思います。 よろしくお願いします。

  • Oracle
  • 回答数7
  • ありがとう数8

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

  • ベストアンサー
  • yoko3333
  • ベストアンサー率35% (47/134)
回答No.3

できた・・・かな? ちょっと不安(^_^;) SELECT Tbl_A.名前, Tbl_A.日付, Tbl_A.順位, Tbl_C.順位 As 順位1 FROM TEST Tbl_A, (SELECT Tbl_B.* FROM TEST Tbl_B WHERE Tbl_B.日付=(SELECT Min(Tbl_D.日付) FROM TEST Tbl_D)) Tbl_C WHERE Tbl_A.名前=Tbl_C.名前 ORDER BY Tbl_C.順位, Tbl_A.名前, Tbl_A.日付

wellkarm
質問者

お礼

出来ました!! すばらしいです! 最高です! 本当にありがとうございました。

その他の回答 (6)

回答No.7

ごめんなさい。ちょっと勘違いしてましたm(_ _)m

回答No.6

名前  日付   順位 山田  20050301 1 山田  20050302 3 田中  20050301 2 田中  20050302 1 佐藤  20050301 3 佐藤  20050302 4 鈴木  20050301 4 鈴木  20050302 2 上のようなデータなら WHERE で取得したい日付を指定して ORDER BY で順位を並び替えじゃダメかな?

回答No.5

オラクルのバージョンによっては、分析関数の利用によって、結合を行わずに問い合わせできます。 環境にもよりますが、効率が良い可能性があるというところしか違いませんが.. select 名前, 日付, 順位 from ( select 名前, 日付, 順位, lag(キー, 1, キー) over(partition by 名前 order by キー) キー from ( select 名前, 日付, 順位, decode(日付, min(日付) over(order by 日付), 順位) キー from xxx ) ) order by キー, 名前;

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.4

select A, B, C from ocyan.テストm group by A order by B,C ; ソートオーダは複数項目指定できるのでこれで出来ませんか?

  • yoko3333
  • ベストアンサー率35% (47/134)
回答No.2

あー、なるほど! なんとなくわかりました。 ちなみに、ビューを使ったりとかしてもOKですか? 1回のSELECT文でもできるのでしょうけど、かなり複雑になりそうなので、 ビューが使えればそちらの方が良いと思うのです。 いかがでしょう?

wellkarm
質問者

補足

すみません。原則的にViewは使わないことになっているので、SELECT文でお願い出来ますでしょうか?

  • yoko3333
  • ベストアンサー率35% (47/134)
回答No.1

うーん・・・ > つまりORDER BY B、Cの結果の1つ目のレコードの > AでGROPE BYするような感じです。 ここの意味がいまいち分からないのですが。 (私の理解力が足りないのか・・・。) > ccc 1 4 > ccc 2 5 > bbb 1 5 > bbb 2 6 > aaa 1 6 > aaa 2 4 この結果だけ見たら、「order by A desc, B」ですけど、そうじゃないんですよね? 申し訳ありませんが、別の例も出してみていただけませんでしょうか?

wellkarm
質問者

補足

すみません。説明不足です。 でも表現しにくいので、下記の例を挙げます。 2005年3月1日時点での順位が高い人から並べたい。                名前  日付   順位 鈴木  20050301 4 鈴木  20050302 2 佐藤  20050301 3 佐藤  20050302 4 田中  20050301 2 田中  20050302 1 山田  20050301 1 山田  20050302 3     ↓     名前  日付   順位 山田  20050301 1 山田  20050302 3 田中  20050301 2 田中  20050302 1 佐藤  20050301 3 佐藤  20050302 4 鈴木  20050301 4 鈴木  20050302 2 ORDER BY それぞれ名前・日付・順位としても上記の結果にはなりませんよね。 (日付+順位)でソートとして名前順に表示みたいな。。。 なんとも説明がヘタで申し訳ございません。。。

関連するQ&A

  • 【ACCESS】重複チェック方法について

    下記のように、複数フィールドがあり、 フィールド1,2,3が全て同じレコードを抽出したいのですが 抽出する方法があれば、教えてください。 フィールド1 フィールド2 フィールド3 ・・・・ ――――――+――――――――+――――――――+――――― 12345 AAA aaa 12345 BBB aaa 12378 AAA aaa 12378 AAA bbb 23456 CCC bbb 23456 CCC bbb  ―>抽出したい!! 23456 CCC ccc

  • SQLのこと:distinctして並び替えたい

    select * from (select distinct on (aaa) * from bbb) as ccc order by ddd テーブルbbbのaaaというフィールドが重複せず、しかも他のフィールドで並び替えをしたかったら、このような書き方以外ありますか?データベースはPostgreSQLです。 この書き方で不都合が出ているというわけではありませんが、どう書けば、パフォーマンス的にも良いSQLになるか、詳しい方がいらっしゃいましたら、お願いします。

  • エクセル2007でのtxtファイルの並び替えについて

    エクセル2007でのtxtファイルの並び替えについて 以下のようなtxtファイルの記述をexcel2007に取り込んで 「- 」より右をアルファベット順に並び替えることはできますか? 可能でしたらご教授お願いいたします。 丙野裕太 - ccc 甲野健太郎 - aaa 乙野一 - bbb ↓ 甲野健太郎 - aaa 乙野一 - bbb 丙野裕太 - ccc

  • 行数ごとに検索をかけて並び替えをしたいのですが・・

    数千のファイル名が書かれたテキストファイルがあります。(Aとします。) /yyy/ccc.txt /aaa/aaa.txt /bbb/bbb.txt /sss/aaa.txt /ccc/bbb.txt /zzz/ccc.txt ・ ・ ・ ユニークファイル名だけ書かれたファイルがあります。(Bとします。) aaa.txt bbb.txt ccc.txt ・ ・ ・ Bの行数1行ずつAで検索をかけ、ファイル名を新しいファイル(Cとします)に書き出したいのです。 /aaa/aaa.txt /sss/aaa.txt /bbb/bbb.txt /ccc/bbb.txt /yyy/ccc.txt /zzz/ccc.txt ・ ・ ・ シェルを使ってやりたいのですが、どのようにすればいいのか見当もつきません。 どなたかお分かりのかたいましたら教えてください。よろしくおねがいします。

  • エクセルVBAで重複する名前に(2)、(3)等をつける方法は?

    こんにちは。お世話になります。 以下のようなデータ(約1500件)があります。 データは分類と名称でソート済みです。 同じ分類のなかで同じ「名称」があった場合、B列の名称の直後に同一セル内で(2)や(3)を順に振っていくマクロを教えていただきたいのです。(1)は不要です。 下記の例では、ううう(2)、ううう(3)といった具合です。 よろしくお願いします。 A列 B列 C列 分類 名称 データ1 aaa あああ a aaa いいい b aaa ううう a aaa ううう a aaa ううう a aaa えええ b bbb かかか a bbb かかか a bbb ききき a bbb くくく b ccc さささ a ccc ししし b ccc すすす a ccc すすす a ccc すすす a ccc すすす a ccc せせせ a

  • 抜けている番号を抽出したい(Access2003)

    主キーのフィールドには AAA000001 AAA000002 AAA000004 BBB000001 BBB000003 BBB000004 CCC000001 CCC000005 ・ ・ ・ というレコードが多数あるのですが これだけなら AAA000003 BBB000002 CCC000002 CCC000003 CCC000004 がないというのがぱっと見でわかるのですが データが数千レコードあります。 クエリなどで抽出する方法ありますでしょうか? よろしくお願いします。

  • エクセルの並び替えについて

    エクセルの並び替えについて質問させて頂きます。 下記のようにエクセルに文字列を入力しています。 A         B       1 10011   ホワイト 2        ブラック 3        ブルー 4 10002   ブラウン 5      レッド 6      イエロー 7 10005   パープル  8      ネイビー 9      サックス      A1に「10011」と入力してありますが、「10011」という品番に対してセルB1・B2・B3のホワイト・ブラック・ブルーのカラーが存在するという意味です。 ここで並べ替えを行いセルA1・A4・A7の数字を若い順(昇順)に並べ替えを行った場合、品番のみ昇順となり、カラーがその品番に対してキレイに並び替えが行われないのです。 最終的に下記のように並び替えを行いたいのですが、どのように並び替えを行えばよろしいでしょうか?よろしくお願い致します。 A    B    C   …    1 10002   ブラウン 2      レッド 3      イエロー 4 10005   パープル  5      ネイビー 6      サックス  7 10011 ホワイト 8      ブラック 9      ブルー     

  • 並び替え

    お願いします MySQLを使ってクエリーを書いているのですが 例えば[test]というフィールドがあったとして そのフィールドにa,b,cというデータが入っているとし データを取り出す場合 ORDER BY句を使ってaから取り出す方法とcから取り出す方法はわかるのですが bから取り出すことというのはできるのでしょうか? よろしくお願いします

    • ベストアンサー
    • MySQL
  • ある条件を持たないレコードの抽出

    下記のようなデータがあります。 col1 col2 ========== 001 AAA 001 BBB 001 CCC 002 AAA 002 CCC 003 BBB 003 CCC 004 AAA col2 にBBB を持たないレコードを抽出したいのですが どのようにSQLを記述すればよいかご教授ください。 得たい結果 002 004 どうぞよろしくお願いいたします。

  • select文の表示結果を置き換える

    sql初心者です、皆様ご教授お願いいたします。 以下のようなselect文の結果が・・・ select aaa,bbb,ccc from XXX order by aaa 以下のようになった場合・・・ 埼玉 100 AAA 東京 200 BBB 東京 200 CCC 東京 300 CCC 千葉 400 CCC 以下のような表示を行う事はsqlで可能でしょうか? 埼玉 100 AAA 東京 200 BBB (〃)(〃) CCC (〃) 300 (〃) 千葉 400 (〃) つまり「一つ前のレコードと同じ結果だった項目は”〃”等の任意の文字列を出力する」です。 宜しくお願いいたします。