我需要计算不同年份的 InterimData 值之间的运行差异。
年 | 月 | 供应商 | 供应商名称 | 临时数据 |
---|---|---|---|---|
2022 | 8 | 1 | A | 3866.666667 |
2022 | 9 | 1 | A | 3866.666667 |
2022 | 12 | 1 | A | 3866.666667 |
2023 | 3 | 1 | A | 7416.666667 |
2023 | 3 | 2 | 乙 | 7416.666667 |
常数 = 12800
预期产出:
年 | 最终价值 | 逻辑 |
---|---|---|
2022 | 8933.333333 | (2022 年的持续不同的中期数据) |
2023 | 1516.666666 | (2022 年的终值 - 2023 年的不同中期数据) |
我试过使用
LAG
函数,但它没有按预期运行。我正在使用 sql server 2022.
你能帮帮我吗?
LAG
在这里帮不了你,因为它没有包含所有以前记录的信息。
你可以通过以下方式解决这个问题:
SELECT Year_,
12800 - SUM(InterimData) OVER(ORDER BY Year_) AS FinalValue
FROM (SELECT DISTINCT Year_, InterimData FROM tab) cte
输出:
年_ | 最终价值 |
---|---|
2022 | 8933.333333 |
2023 | 1516.666666 |
在这里查看演示.