CASE句の結果で並び順をSORTする方法です
サンプル
例として以下PREFテーブルを使用して、
東京→名古屋→大阪の順にソートしてみます。
cd | name |
---|---|
1 | 東京 |
2 | 大阪 |
3 | 名古屋 |
例1)列にCASE句を追加するパターン
1 2 3 4 5 6 7 |
SELECT PREF.* ,CASE CD WHEN 2 THEN 9 ELSE CD END SORTKEY FROM PREF ORDER BY SORTKEY |
- 実行結果
- CD NAME SORTKEY --- -------- ---------- 1 東京 1 3 名古屋 2 2 大阪 9
例2)ORDER BY句にCASE句を追加するパターン
1 2 3 4 5 6 |
SELECT * FROM PREF ORDER BY CASE CD WHEN 2 THEN 9 ELSE CD END |
- 実行結果
- CD NAME --- -------- 1 東京 3 名古屋 2 大阪
解説
- 大阪が最後にソートされるように、大阪のCDを2から9に変更してソートしています
(あまり良い例ではありませんが・・) - 例1は、CASE句でソート用の列を作成しその列でソートしています。
- 例2は、ORDER BY句に直接CASE句を指定してソートしています。