我有一张桌子:
create table Transactions(Tid int,amt int)
Run Code Online (Sandbox Code Playgroud)
有5行:
insert into Transactions values(1, 100)
insert into Transactions values(2, -50)
insert into Transactions values(3, 100)
insert into Transactions values(4, -100)
insert into Transactions values(5, 200)
Run Code Online (Sandbox Code Playgroud)
期望的输出:
TID amt balance
--- ----- -------
1 100 100
2 -50 50
3 100 150
4 -100 50
5 200 250
Run Code Online (Sandbox Code Playgroud)
基本上对于第一记录余额将是相同的amt,第二个向前余额将是先前余额+当前的余额amt.我正在寻找一种最佳方法.我可以考虑使用函数或相关子查询,但不确定如何做到这一点.
可能重复:
如何在不使用游标的情况下计算SQL中的运行总计?
这有点难以解释,所以我将通过一个例子展示我想要的东西:
可以说我们有以下表格命名MonthProfit:
[MonthId][Profit]
1, 10 -- January
2, 20 -- February
3, 30
4, 40
5, 50
6, 60
7, 70
8, 80
9, 90
10, 100
11, 110
12, 120 -- December
Run Code Online (Sandbox Code Playgroud)
列profit表示该月的利润.
但是,如果我们1月份有10个利润,2月份有20个,那么2月份我们的利润总额为30.
所以我想创建一个显示以下内容的视图:
[MonthId][Profit][ProfitTotal]
1, 10, 10 -- January
2, 20, 30 -- February
3, 30, 60
4, 40, 100
5, 50, 150
6, 60, 210
7, 70, 280
8, 80, 360
9, 90, 450
10, 100, 550
11, 110, 660 …Run Code Online (Sandbox Code Playgroud) COL COL1 COL2 SUM cumm
1 2 3 6 6
4 5 6 15 21
7 8 9 24 45
Run Code Online (Sandbox Code Playgroud)
在上面的表结果集中我需要像这样的cumm列值,如何使用查询执行此操作,有人可以帮忙吗?