トップページに戻る
次のSQLパズルへ
前のSQLパズルへ
5-25 order by句で、case式による多分岐
SQLパズル
受注テーブル
NO 受注日
-- ----------
1 2004/05/10
2 2004/05/12
3 2004/05/23
4 2004/05/20
5 2004/05/29
6 2004/05/01
7 2004/05/05
8 2004/05/07
受注テーブルを
NOが1,3,2,8,5,4,7,6の順でソートする。
データ作成スクリプト
create Table 受注(
NO number(1),
受注日 date);
insert into 受注 values(1,to_date('20040510','yyyymmdd'));
insert into 受注 values(2,to_date('20040512','yyyymmdd'));
insert into 受注 values(3,to_date('20040523','yyyymmdd'));
insert into 受注 values(4,to_date('20040520','yyyymmdd'));
insert into 受注 values(5,to_date('20040529','yyyymmdd'));
insert into 受注 values(6,to_date('20040501','yyyymmdd'));
insert into 受注 values(7,to_date('20040505','yyyymmdd'));
insert into 受注 values(8,to_date('20040507','yyyymmdd'));
commit;
SQL
select No,受注日
from 受注
order by
case No
when 1 then 1
when 3 then 2
when 2 then 3
when 8 then 4
when 5 then 5
when 4 then 6
when 7 then 7
when 6 then 8
else 9 end;
解説
order by句でcase式を使用して、Noの値をソート順に変換してます。