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>
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)