トップページに戻る    次の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の値をソート順に変換してます。