【发布时间】:2015-04-01 11:02:19
【问题描述】:
我正在使用 HANA SQL 脚本,计算后视图/表中的数据显示如下
Col A Col B Col C
1000042965 20090830 15.9
1000042965 20090906 0
1000042965 20090913 0
1000042965 20090920 14.2
1000042965 20090927 0
1000042965 20091004 0
1000042965 20091011 14.4
1000042967 20090830 13.2
1000042967 20090906 0
1000042967 20090913 12.9
1000042967 20090920 0
1000042967 20090927 0
1000042967 20091004 11.2
1000042967 20091011 11.2
我的预期输出为
Col A Col B Excepted Result for Col C
1000042965 20090830 15.9
1000042965 20090906 15.9
1000042965 20090913 15.9
1000042965 20090920 14.2
1000042965 20090927 14.2
1000042965 20091004 14.2
1000042965 20091011 14.4
1000042967 20090830 13.2
1000042967 20090906 13.2
1000042967 20090913 12.9
1000042967 20090920 12.9
1000042967 20090927 12.9
1000042967 20091004 11.2
1000042967 20091011 11.2
我只想返回以前的非空值。我尝试使用 Windows LAG 功能,但我想要的输出与上面不同。
LAG(col C) OVER (partition by Col A)
我参考了以下链接并尝试实现相同的逻辑,但我仍然无法获得 Finding the previous non-zero value from an date-ordered list
SELECT distinct col A, Col B,
CASE WHEN col C = 0 THEN
IFNULL(( SELECT col C
FROM TABLE as T2
WHERE CAST(T2.col B AS DATE) < T1.col B AND T1.Col A = T2.col A AND T2.Col C > 0
),0)
ELSE Col C END Col C
FROM TABLE as T1
【问题讨论】: