sql - 将每一行的计算结果用于下一行并进一步
问题描述
我有一张下表,想计算新库存。最初新库存为 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)
我也使用了交叉应用,但没有得到结果。
解决方案
我想你想要一个累积的总和:
select t.*,
sum(case when operation = 'buy' then qty else -qty end) over (order by id) as newstock
from t
推荐阅读
- javascript - html显示属性不能使用javascript更改
- linux-kernel - 重新接通交流电源后以太网端口不工作
- asp.net - ASP.NET 将记录从 Excel 复制到 SQL Server - 性能缓慢
- python - 与 ovito 库结合使用时,Python 的 matplotlib 中 plt.figure() 中的“无法在没有 QApplication 的情况下创建 QWidget”
- android-studio - 如何将文件的数据转换为人类可读的格式
- java - pom.xml 文件在尝试添加依赖项时显示错误
- node.js - 仅安装 devDependencies - `swagger-express-middleware` 会阻止 `glob` 安装
- c# - C# 以某种方式将排名添加到列表元素
- javascript - 如何最小化 AWS Chime SDK 浏览器客户端使用的 JavaScript 文件的大小
- r - 2-Sample Cramer-Von Mises 统计的演示 - 如何显示总和以使 CYM 统计的线