トップページに戻る
次のSQLパズルへ
前のSQLパズルへ
10-27 時間の連番を作成
SQLパズル
以下のデータを作成する。
時間
----
4時
5時
6時
7時
8時
9時
10時
11時
12時
13時
14時
15時
16時
(システム時刻まで)
SQL
--■■■dualテーブルに対する階層問い合わせを使う方法(10g以降)■■■
select to_char(RowNum+3) || '時' as 時間
from dual
connect by Level+3 <= to_number(to_char(sysdate,'HH24'));
--■■■all_catalogを使う方法■■■
select to_char(RowNum+3) || '時' as 時間
from all_catalog
where RowNum+3 <= to_number(to_char(sysdate,'HH24'));
--■■■クロスジョインを使う方法■■■
select to_char(RowNum+3) || '時' as 時間
from (select 1 from dual union all select 2 from dual),
(select 1 from dual union all select 2 from dual),
(select 1 from dual union all select 2 from dual),
(select 1 from dual union all select 2 from dual),
(select 1 from dual union all select 2 from dual)
where RowNum+3 <= to_number(to_char(sysdate,'HH24'));
解説
all_catalogデータディクショナリビューは、
連番を作成するのに使えます。
クロスジョインを使う方法では、Log2(24-3) = 4.39....なので、
(select 1 from dual union all select 2 from dual)を5個使ってます。