トップページに戻る
次のSQLパズルへ
前のSQLパズルへ
10-157 桁数で場合分け
SQLパズル
SortTestTable
Val
---
00
01
02
07
08
88
89
90
91
文字列型の数値を、以下の順序で出力する。
最初に、2桁でない数を、降順に出力
次に、2桁の数を、降順に出力
出力結果
Val
---
08
07
02
01
00
91
90
89
88
データ作成スクリプト
create table SortTestTable as
select '00' as Val from dual
union select '01' from dual
union select '02' from dual
union select '07' from dual
union select '08' from dual
union select '88' from dual
union select '89' from dual
union select '90' from dual
union select '91' from dual;
SQL
select Val
from SortTestTable
order by
case when substr(Val,1,1) = '0' then Val end desc nulls Last,
Val desc;
解説
case式を使って、桁数で場合分けしてます
脳内ソートは、こんな感じです
ソート前 第1ソートキーでソート後
Val Val
--- -----------------------
00 08
01 07
02 02
07 01
08 00
88 88 89 90 91
89
90
91
場合分けの資料