Running 连续年份值之间的差异

问题描述 投票:0回答:1

我需要计算不同年份的 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.

你能帮帮我吗?

sql sql-server window-functions
1个回答
0
投票

LAG
在这里帮不了你,因为它没有包含所有以前记录的信息。

你可以通过以下方式解决这个问题:

  • 从数据中提取独特的逐年值
  • 使用运行总和,叠加所有前面的 InterimData 值
  • 从常量中减去您的聚合值。
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

在这里查看演示.

© www.soinside.com 2019 - 2024. All rights reserved.