トップページに戻る
次のSQLパズルへ
前のSQLパズルへ
10-10 null以外の、以前の値を取得
SQLパズル
テーブルT
Col1 Col2
---- ----
A 1111
B null
C null
D null
E null
F 3333
G null
H null
I 2222
テーブルTから、以下の出力を行う。
出力結果
Col1 Col2 Col3
---- ---- ----
A 1111 1111
B null 1111
C null 1111
D null 1111
E null 1111
F 3333 3333
G null 3333
H null 3333
I 2222 2222
データ作成スクリプト
create table テーブルT(
Col1 char(1),
Col2 number(4));
insert into テーブルT values('A',1111);
insert into テーブルT values('B',null);
insert into テーブルT values('C',null);
insert into テーブルT values('D',null);
insert into テーブルT values('E',null);
insert into テーブルT values('F',3333);
insert into テーブルT values('G',null);
insert into テーブルT values('H',null);
insert into テーブルT values('I',2222);
commit;
SQL
--■■■Last_Value関数とignore nullsを使う方法(10g以降)■■■
select Col1,Col2,
Last_Value(col2 ignore nulls) over(order by col1) as Col3
from テーブルT;
--■■■相関サブクエリを使う方法■■■
select Col1,Col2,
(select b.Col2 from テーブルT b
where b.Col1 = (select max(c.Col1) from テーブルT c
where c.Col1 <= a.Col1
and c.Col2 is not null)) as Col3
from テーブルT a;
解説
Last_Value関数でignore nullsを指定すると、
nullを対象外とすることができます。