我在努力计算 Calc
基于 Val1
以及 Val2
. Calc
= previous_row.Calc
+ previousr_row.Val1
- previous_row.Val2
输入数据按顺序排列 Date
.
预期产量:
+---------+--------+------------+------+
| Val1 | Val2 | Date | Calc |
+---------+--------+------------+------+
| 0,00 | 0,00 | 2016-01-01 | 0 |
| 1000,00 | 0,00 | 2020-01-01 | 0 |
| 0,00 | 0,00 | 2020-01-15 | 1000 |
| 0,00 | 500,00 | 2020-02-01 | 1000 |
| 0,00 | 300,00 | 2020-03-01 | 500 |
| 0,00 | 0,00 | 2020-03-15 | 200 |
| 0,00 | 200,00 | 2020-04-01 | 200 |
+---------+--------+------------+------+
已尝试lag函数,成功从上一行获取数据,但无法从上一行获取计算值: LAG(Val1) OVER (ORDER By Date) - LAG(Val2) OVER (ORDER BY Date)
在真实场景中,我将添加分区,但情况不同。我现在想保持简单。
更新:受他人启发: SUM(Val1) OVER(ORDER BY Data) - SUM(Val2) OVER(ORDER BY Data) - Val1 + Val2 AS Calc
当它计算出正确的值时,这是有效的吗?
我正在使用最新的sql server 2019/azure sql。
2条答案
按热度按时间wyyhbhjk1#
我认为您正在寻找累积和函数:
wbrvyc0a2#