【发布时间】:2020-07-16 05:12:47
【问题描述】:
我需要根据最后一个 Col_Date 结转来自 Col_Value 的值(基于列 Col_1,Col_2,Col_3,Col_4 上的逻辑分区)。当当前行有值时,我们不应该结转并使用当前值,否则从上一个日期结转。如果当前行和上一个日期没有值,那么我们应该使用最后一个最近的结转值。
这是我的输入表。
下面是我目前尝试的sql。
select *,
case
when col_value is null
then lag(Col_Value) over (PARTITION BY Col_1,Col_2,Col_3,Col_4 order by Col_Date)
else col_value
end as Carry_Fowrard_Value
from carry_table
我使用了lag解析函数,根据我上面分享的sql得到了下面的结果。但是由于前一个日期没有值,因此突出显示的行为空。如何根据最后一个可用值结转该值?
下面是预期的输出。
非常感谢任何帮助。
【问题讨论】:
-
表格形式比附加图片更好。
-
@热心。著名的。展望未来,我将以表格形式而不是图像形式给出。
标签: sql hive window-functions lag