oracle取非空,求一条sql,返回分组后,空值取最近一条非空值,非空值取本身

如下:

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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值