ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle中分析函数获取之前最近的不为null的值

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

原创 Linux操作系统 作者:lihy114 时间:2013-11-08 16:59:07 0 删除 编辑
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)
 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28803801/viewspace-776134/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-08-08

  • 博文量
    54
  • 访问量
    152643