トップページに戻る
次のSQLパズルへ
前のSQLパズルへ
7-28 空き番号を取得その1
SQLパズル
以下のテーブルから空き番号を取得する。
No
--
1
5
9
14
21
22
24
出力結果
No 空き
-- -----
1 null
5 2-4
9 6-8
14 10-13
21 15-20
22 null
24 23
データ作成スクリプト
create table NoTable1(No number(2));
insert into NoTable1 values( 1);
insert into NoTable1 values( 5);
insert into NoTable1 values( 9);
insert into NoTable1 values(14);
insert into NoTable1 values(21);
insert into NoTable1 values(22);
insert into NoTable1 values(24);
commit;
SQL
col 空き for a8
select No,
LPad(case when No-LagNo=1 or LagNo is null then null
when No-LagNo=2 then to_char(No-1)
else to_char(LagNo+1) || '-' || to_char(No-1) end,5) as 空き
from (select No,
Lag(No) over(order by No) as LagNo
from NoTable1)
order by No;
解説