首页 > 解决方案 > 将每一行的计算结果用于下一行并进一步

问题描述

我有一张下表,想计算新库存。最初新库存为 0

id  qty  price  operation  newstock
1   20   23      buy
2   10   12      sale
3   15   14      buy
4   6    13      buy

等等

想要输出像 - 在购买的情况下 - newstock+qty 和在销售的情况下 - newstock-qty

id  qty  price  operation  newstock
1   20   23      buy        23    (eg- 0+23= 23)
2   10   12      sale       13    (previous row 23-10)
3   15   14      buy        28    (previous row 13+15)
4   6    13      buy        32    ( previous row 28+6)

我也使用了交叉应用,但没有得到结果。

标签: sql

解决方案


我想你想要一个累积的总和:

select t.*,
       sum(case when operation = 'buy' then qty else -qty end) over (order by id) as newstock
from t

推荐阅读