首页 > 解决方案 > SQL 在您向下行时计算运行总计,但也会考虑其他字段

问题描述

我希望你们能帮助解决这个问题。

我有一组通过 excel 显示的数据。

1

我正在尝试计算滚动的新上限津贴,但需要从前几周的预订中扣除。我不想使用光标,所以任何人都可以帮忙。

我将按产品 ID 进行分组,因此需要为每个产品重新开始。

在图像中,A 到 D 列是固定的,我正在尝试计算 E 列(“新上限”)中的数据。“新上限”是预期结果。

F 列给出了我想要做什么的详细公式。

不知道我做了什么让帖子被标记下来。

谢谢

更新:公式看起来像这样。 在此处输入图像描述

标签: sqlcursorrows

解决方案


您想要通过此行的上限总和减去通过前一行预订的总和。使用窗口函数很容易做到这一点:

select t.*,
       (sum(cap + booked) over (partition by productid order by weekbeg) - booked
       ) as new_cap
from t;

推荐阅读