- ベストアンサー
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,) のように組んでいますが、= が構文エラーになってしまします。 よろしくお願いします。
- みんなの回答 (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
その他の回答 (1)
- t_nojiri
- ベストアンサー率28% (595/2071)
>色々調べてはみましたが、解決できません。 例 select name from * order by switch ([name] = "なし",1, [name] = "あり(A)",2, [name] = "あり(B)",3,) もし、このSQL文が望んだとおり並びかえられたとしても、行の条件全て記述していくつもりなのでしょうか? 「あり」とか「なし」といった文字列を本当にソート条件にしなくちゃならないのか、それともテーブルの設計が悪いのか考えた方が良いと思いますけど。
お礼
調べていただきありがとうございます。 この欲しい結果は緊急用の対策の為に欲しかったので、 莫大なデータ量になることもなく、実際に今のデータは3つなのです。
お礼
ありがとうございました。 解決しました。 switch ではなくcase なのですね。 私が見たページはおそらくオラクルやアクセスだったのだと思います。