2

不知道该怎么说。假设我有一个选择返回这个。

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 中从前几个月汇总。

4

3 回答 3

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

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

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

于 2012-10-12T09:53:43.777 回答
0

像这样使用分组

SELECT NAME, MONTH , SUM(Balance) FROM table GROUP BY NAME, MONTH
于 2012-10-12T09:51:14.863 回答
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
于 2012-10-12T09:54:46.093 回答