• ベストアンサー

SQL 任意 指定 並び替え

Microsoft SQL Enterprise Manager Microsoft Corporation バージョン: 8.0 id name ----------- 1 あり(A) 2  あり(B) 3  なし このテーブルを なし あり(A) あり(B) となるようにしたいです。 任意の並べ替えはできるのでしょうか? 色々調べてはみましたが、解決できません。 例 select name from * order by switch ([name] = "なし",1, [name] = "あり(A)",2, [name] = "あり(B)",3,) のように組んでいますが、= が構文エラーになってしまします。 よろしくお願いします。

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

  • ベストアンサー
  • 7marine
  • ベストアンサー率36% (59/160)
回答No.2

select name from * order by switch ([name] = "なし",1, [name] = "あり(A)",2, [name] = "あり(B)",3,) いろいろツッコミどころのあるクエリですが(笑 select * from テーブル名 order by case [name] when 'なし' then 1 when 'あり(A)' then 2 when 'あり(B)' then 3 else 0 end

kazukuza777
質問者

お礼

ありがとうございました。 解決しました。 switch ではなくcase なのですね。 私が見たページはおそらくオラクルやアクセスだったのだと思います。

その他の回答 (1)

  • t_nojiri
  • ベストアンサー率28% (595/2071)
回答No.1

>色々調べてはみましたが、解決できません。 例 select name from * order by switch ([name] = "なし",1, [name] = "あり(A)",2, [name] = "あり(B)",3,) もし、このSQL文が望んだとおり並びかえられたとしても、行の条件全て記述していくつもりなのでしょうか? 「あり」とか「なし」といった文字列を本当にソート条件にしなくちゃならないのか、それともテーブルの設計が悪いのか考えた方が良いと思いますけど。

kazukuza777
質問者

お礼

調べていただきありがとうございます。 この欲しい結果は緊急用の対策の為に欲しかったので、 莫大なデータ量になることもなく、実際に今のデータは3つなのです。

関連するQ&A