假设一个时间序列,其中每个时间点都有一个值。我必须通过计算当前值 + 前一个值的总和来计算连续总和。然而,棘手的部分是,总和应该有上限,因此不能超过某个值。
示例:总和上限为 +2。
+-----+---------+------------+
| row | measure | capped sum |
+-----+---------+------------+
| 1 | 1 | 1 |
| 2 | 3 | 2 |
| 3 | 4 | 2 |
| 4 | -2 | 0 |
| 5 | 1 | 1 |
+-----+---------+------------+
例如,第 4 行的“上限总和”是使用前一行“2”中的“上限总和”并加上当前值来计算的。由于结果是 < 2,我们可以按原样取值。
问题是,使用 HANA,我不能在“上限总和”字段上使用 LAG/Window 函数。它会给我一个“未知列”错误。
任何想法如何在不使用 for 循环的情况下在 SQL/HANA SQL 脚本中解决这个问题(这会很慢)?