みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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,)

のように組んでいますが、= が構文エラーになってしまします。

よろしくお願いします。

投稿日時 - 2005-12-03 15:44:34

QNo.1816935

暇なときに回答ください

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

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

投稿日時 - 2005-12-03 16:22:40

お礼

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

投稿日時 - 2005-12-03 16:44:05

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

>色々調べてはみましたが、解決できません。

select name
from *
order by switch ([name] = "なし",1,
[name] = "あり(A)",2,
[name] = "あり(B)",3,)

もし、このSQL文が望んだとおり並びかえられたとしても、行の条件全て記述していくつもりなのでしょうか?

「あり」とか「なし」といった文字列を本当にソート条件にしなくちゃならないのか、それともテーブルの設計が悪いのか考えた方が良いと思いますけど。

投稿日時 - 2005-12-03 16:05:01

お礼

調べていただきありがとうございます。

この欲しい結果は緊急用の対策の為に欲しかったので、
莫大なデータ量になることもなく、実際に今のデータは3つなのです。

投稿日時 - 2005-12-03 16:45:58