程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了DB2 11.5 LEAD LAG 忽略空值大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_489_0@如何解决DB2 11.5 LEAD LAG 忽略空值? 开发过程中遇到DB2 11.5 LEAD LAG 忽略空值的问题如何解决?下面主要结合日常开发的经验,给出你关于DB2 11.5 LEAD LAG 忽略空值的解决方法建议,希望对你解决DB2 11.5 LEAD LAG 忽略空值有所启发或帮助;

我需要使用滞后函数来忽略空记录。

我在没有滞后功能的情况下运行此脚本,但滞后功能不适用于“IGnorE NulLS”参数。

有什么想法吗?

SELECT 
  ID,READING_TIME,MEASURE_FIELD,FirsT_value(MEASURE_FIELD,'IGnorE NulLS' ) 
    OVER(PARTITION BY ID,trunc(READING_TIME,'MM') 
         order by READING_TIME asC) as LAST_HOUR_MEASURE,FirsT_VALUE(MEASURE_FIELD,trunc(READING_TIME) 
         order by READING_TIME desc) as LAST_DAILY_MEASURE,LAG(MEASURE_FIELD,'IGnorE NulLS') 
    OVER (order by READING_TIME desc) as LAG_MEASURE
FROM stg.table t  
ORDER BY 2
@H_489_0@解决方法

请试试这个:

SELECT 
  ID,READING_TIME,MEASURE_FIELD,LAG(MEASURE_FIELD IGNORE NULLS ) 
    OVER(PARTITION BY ID,trunc(READING_TIME,'MM') 
         order by READING_TIME asC) as LAST_HOUR_MEASURE,LAG(MEASURE_FIELD ) 
    OVER(PARTITION BY ID,trunc(READING_TIME) 
         order by READING_TIME desc),IGNORE NULLS  as LAST_DAILY_MEASURE,LAG(MEASURE_FIELD) 
    OVER (order by READING_TIME desc) IGNORE NULLS as LAG_MEASURE
FROM stg.table t  
ORDER BY 2
,

你的语法有点不对。试试:

SELEct *,lag(b,1,-1,'IGNORE NULLS') over(order by a) as prev_b
from t

对于示例数据,例如:

A B
- ------ 
1 101    
2 null
3 103    
4 null
5 105    

它产生:

A B      PREv_b
- ------ ------
1 101        -1   
2 null      101  
3 103       101  
4 null      103  
5 105       103  

请参阅 db<>fiddle 上的运行示例。

注意:在 LAG() 函数中,第三个参数不能为空(不幸的是)。我在这个例子中使用了 -1 来演示当函数没有找到值时如何使用这个值。

大佬总结

以上是大佬教程为你收集整理的DB2 11.5 LEAD LAG 忽略空值全部内容,希望文章能够帮你解决DB2 11.5 LEAD LAG 忽略空值所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。