oracle中分析函式獲取之前最近的不為null的值

lihy114發表於2013-11-08
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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章