如下:
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 )
12select 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 A907 A
1908 A
1909 A
1 B910 B
1911 B
2 C907 C
2 A908 A
2909 A
2910 A
2911 A
10 rows selected
SQL>