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

解決済みの質問

SQLがわかりません。

以下のTESTテーブルから以下の結果を表示するようなSQLを教えて頂けないでしょうか。
TESTテーブルでTYPE(1,2,3)を抽出して、2,1,3の順番にして
それぞれのTYPEごとにDBIDでソートをしたいです。
どうかよろしくお願いいたします。


table TEST
DBID | NAME | TYPE
-------------------------------
1 | A | 1
2 | B | 2
3 | C | 3
4 | D | 4
5 | E | 1
6 | F | 2
7 | G | 3
8 | H | 4
9 | I | 1
10 | J | 2

結果
DBID | NAME | TYPE
-------------------------------
2 | B | 2
6 | F | 2
10 | H | 2
1 | A | 1
5 | D | 1
9 | G | 1
3 | D | 3
7 | G | 3

投稿日時 - 2015-08-26 21:03:55

QNo.9037040

すぐに回答ほしいです

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

DECODE を使うとか。

SELECT * FROM TEST
WHERE TYPE IN (1,2,3)
ORDER BY DECODE(TYPE, 1, 2, 2, 1, 3, 3, 4), DBID

投稿日時 - 2015-08-29 14:12:34

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

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

回答(2)

ANo.1

単純なSQLだとその順番で取り出すのは無理でしょう。

無理矢理でいいなら
(SELECT *
FROM TEST
WHERE TYPE = 2
ORDER BY DBID)
UNION ALL
(SELECT *
FROM TEST
WHERE TYPE = 1
ORDER BY DBID)
UNION ALL
(SELECT *
FROM TEST
WHERE TYPE = 3
ORDER BY DBID)
;
って感じでしょうか。

投稿日時 - 2015-08-27 11:50:26

お礼

回答ありがとうございました。

投稿日時 - 2015-09-19 00:58:14