TSQL Running Totals从前一行的总和汇总

时间:2012-10-12 09:48:05

标签: 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的前几个月聚合。

3 个答案:

答案 0 :(得分:2)

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

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

这是一个内联子查询,效率不高。但至少很容易理解发生了什么!

答案 1 :(得分:0)

使用像这样的分组

SELECT NAME, MONTH , SUM(Balance) FROM table GROUP BY NAME, MONTH

答案 2 :(得分:0)

假设您的月份表示为日期,这将为您提供运行总计。

select t1.name, t1.month, sum(t2.amount)
from yourtable t1
left join yourtable t2 
     on t1.name = t2.name
     and t1.month>t2.month
group by t1.name, t1.month