トップページに戻る    次のSQLパズルへ    前のSQLパズルへ

5-54 order by句でcase式で分岐

SQLパズル

果物テーブル
No  Name
--  ------
 1  みかん
 2  りんご
 3  いちご
 4  ぶどう

ソートテーブル
ID  No
--  --
 1   2
 2   4

果物テーブルを、Noの昇順に出力する。
ただし、ソートテーブルの
IDが1のレコードのNoと、Noが等しいレコードを先頭に出力する。

出力結果
NO  Name
--  ------
 2  りんご
 1  みかん
 3  いちご
 4  ぶどう


SQL

with 果物 as(
select 1 as No,'みかん' as Name from dual
union select 2,'りんご' from dual
union select 3,'いちご' from dual
union select 4,'ぶどう' from dual),
ソート as(
select 1 as ID,2 as No from dual
union select 2,4 from dual)
select No,Name
  from 果物 a
order by
case when No = (select b.No from ソート b where b.ID= 1)
     then 1 end,No;


解説

case式で、スカラー副問い合わせを使ってます。