トップページに戻る
次のmodel句のサンプルへ
前のmodel句のサンプルへ
model句12 (固定値での)Partitioned Outer Joinもどき
SQLパズル
tabテーブル
Code Seq Data
---- --- ----
001 1 a
001 2 b
001 3 c
002 1 d
002 3 e
003 3 f
004 2 g
ひとつのcodeに対して、必ず3レコード存在するように
以下の出力をする。
出力結果
Code Seq Data
---- --- ----
001 1 a
001 2 b
001 3 c
002 1 d
002 2 null
002 3 e
003 1 null
003 2 null
003 3 f
004 1 null
004 2 g
004 3 null
データ作成スクリプト
create table tab(
code char(3),
seq number(1),
data char(1));
insert into tab values('001',1,'a');
insert into tab values('001',2,'b');
insert into tab values('001',3,'c');
insert into tab values('002',1,'d');
insert into tab values('002',3,'e');
insert into tab values('003',3,'f');
insert into tab values('004',2,'g');
commit;
SQL
--■■■forを使わない方法■■■
select code,seq,data
from tab
model
partition by (code)
dimension by (seq)
measures(data)
rules(data[1] = data[1],
data[2] = data[2],
data[3] = data[3])
order by code,seq;
--■■■forを使う方法■■■
select code,seq,data
from tab
model
partition by (code)
dimension by (seq)
measures(data)
rules(data[for seq from 1 to 3 INCREMENT 1] = data[cv()])
order by code,seq;
解説