如下:
SQL> with t as(select 1 id,'A' value1,0907 da from dual union all
2 select 1 id,'' value1 ,0908 da from dual union all
3 select 1 id,'' value1 ,0909 da from dual union all
4 select 1 id,'B' value1 ,0910 da from dual union all
5 select 1 id,'' value1 ,0911 da from dual union all
6 select 2 id,'C' value1 ,0907 da from dual union all
7 select 2 id,'A' value1 ,0908 da from dual union all
8 select 2 id,'' value1 ,0909 da from dual union all
9 select 2 id,'' value1 ,0910 da from dual union all
10 select 2 id,'' value1 ,0911 da from dual
11 )
12 select id,
13 value1,
14 da,
15 last_value(value1 ignore nulls) over(partition by id order by rownum) new_value1
16 from t
17 /
ID VALUE1 DA NEW_VALUE1
---------- ------ ---------- ----------
1 A 907 A
1 908 A
1 909 A
1 B 910 B
1 911 B
2 C 907 C
2 A 908 A
2 909 A
2 910 A
2 911 A
10 rows selected
SQL>