• ベストアンサー

ソートの仕方

次のようなテーブルを、下のようにソートしたいのですが、どうすればよいでしょうか? A B --- 1 1 2  3 7   3   4   5 4 8 ソート後 A B --- 1 1 2     3   4   5 3 7 4 8 よろしくお願いします。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

仕様がわからないので、答えようがないかと。 単純にAが優先なら 1 1 2   3 7 4 8   3   4   5 になるでしょうし、 片方がnullの場合が優先なら 2     3   4   5 1 1 3 7 4 8 単純に小さいデータがでてきた順なら 1 1 2   3 7   3 4 8   4   5 みたいになるはずですよね? いったいどういう仕様なのでしょうか?

すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.2

#1さんと同じく、ソートのルールが不明確なので、どういうアドバイス が適切なのか回答者側で判断できません。 示されたデータからは、「Bで優先してソート、ただしBがnullならAで ソート」なのかと感じられますが? もしそうなら、次のどちらかで試してみてください。 (1)ソートに用いた値も表示 select coalesce(B,A) as seq,A,B from t1 order by seq; (2)ソートに用いた値は非表示 select A,B from t1 order by coalesce(B,A);

w0a15455
質問者

お礼

お二人ともありがとうございました。 SQLのソートだけでは、無理そうなので、プログラムの方で ソートキーを作ることにしました。 ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A