大佬教程收集整理的这篇文章主要介绍了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,请注明来意。