oracle中分析函数获取之前最近的不为null的值

浏览: 1771

原文地址:oracle中分析函数获取之前最近的不为null的值 作者:lihy114

oracle通过分析函数获取当前行之前的不为空的值

使用last_value,但是要注明ignore nulls 

比如有数据如下:

RN      ADDRESS     ARRIVAL_TIME         USERID    

 ------  ----------  -------------------  --------- 

 1       A1          2012-7-9 下午12:03:21  1         

 (null)  A2          2012-7-9 下午12:04:21  2         

 (null)  A3          2012-7-9 下午12:05:21  3         

 2       A1          2012-7-9 下午12:08:21  4         

 (null)  A2          2012-7-9 下午12:09:21  5         

 (null)  A3          2012-7-9 下午12:10:21  6         

 3       A1          2012-7-9 下午12:13:21  7         

 (null)  A3          2012-7-9 下午12:15:21  8         

 4       A1          2012-7-9 下午12:18:23  9         

 5       A1          2012-7-9 下午12:19:21  10        

 (null)  A2          2012-7-9 下午12:20:21  11        

 (null)  A3          2012-7-9 下午12:21:21  12        

 6       A1          2012-7-9 下午12:23:23  13        

 (null)  A2          2012-7-9 下午12:24:21  14 

 

 select rn,address,arrival_time,userid,last_value(rn ignore nulls) over(order by userid) from test

 查询结果如下:

  RN      ADDRESS     ARRIVAL_TIME         USERID     GROUP_T    

 ------  ----------  -------------------  ---------  ---------- 

 1       A1          2012-7-9 下午12:03:21  1          1          

 (null)  A2          2012-7-9 下午12:04:21  2          1          

 (null)  A3          2012-7-9 下午12:05:21  3          1          

 2       A1          2012-7-9 下午12:08:21  4          2          

 (null)  A2          2012-7-9 下午12:09:21  5          2          

 (null)  A3          2012-7-9 下午12:10:21  6          2          

 3       A1          2012-7-9 下午12:13:21  7          3          

 (null)  A3          2012-7-9 下午12:15:21  8          3          

 4       A1          2012-7-9 下午12:18:23  9          4          

 5       A1          2012-7-9 下午12:19:21  10         5          

 (null)  A2          2012-7-9 下午12:20:21  11         5          

 (null)  A3          2012-7-9 下午12:21:21  12         5          

 6       A1          2012-7-9 下午12:23:23  13         6          

 (null)  A2          2012-7-9 下午12:24:21  14         6 

 除了last_value(rn ignore nulls),到了11g r2,oracle还支持了lag(rn ignore nulls)和lead(rn ignore nulls)

 

推荐 0
本文由 alexandre2008 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册