sql - TSQL 运行总计根据前一行的总和进行聚合

标签 sql sum aggregate-functions rows

不知道如何表达。假设我有一个选择返回此。

Name, month, amount
John, June, 5
John, July,6
John, July, 3
John August, 10

我想汇总并报告每个月的期初余额。

姓名、月份、期初余额。

john, may, 0
john, june, 0
john, july, 5
john, august, 14
john, September, 24

我可以在 Excel 中使用单元格公式执行此操作,但如何在 SQL 中执行此操作而不将值存储在某处?我有另一个包含财务月份的表,我可以进行左外连接,以便报告所有月份,只是不确定如何在 sql 中汇总前几个月的数据。

最佳答案

select
name
, month
, (select sum(balance) from mytable 
   where mytable.month < m.month and mytable.name = m.name) as starting_balance
from mytable m
group by name, month

这不像窗口函数那么好,但由于它们因数据库而异,因此您需要告诉我们您正在使用哪个系统。

而且它是一个内联子查询,性能不是很好。但至少很容易理解发生了什么!

关于sql - TSQL 运行总计根据前一行的总和进行聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12856406/

相关文章:

c# - 这个按小时平均和分组的 LINQ 查询编写得是否高效?

mysql - 使用 Sequelize.js 加入特定列

php - 在opencart中将商店id添加到产品导出中(mysql查询)

sql - 如何将 2 组查询的结果合并到额外列中的一个 sql 查询中?

mysql - 如何连续总结过去30天?

sql - 文本字段上的 COUNT 和 GROUP BY 似乎很慢

sql - 不同表中的总和

python - 如何将 python 列表中的第 n 个条目相互添加?

MySQL SUM 多列

sql - 在 Postgres 中添加多个列的累积总和