为了账号安全,请及时绑定邮箱和手机立即绑定

计算运行总量/运行余额

计算运行总量/运行余额

慕运维8079593 2019-07-09 13:26:36
计算运行总量/运行余额我有张桌子:create table Transactions(Tid int,amt int)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)期望产出:TID  amt  balance--- ----- -------1    100   1002    -50    503    100   1504   -100    505    200   250基本上,对于第一次记录,余额将是相同的amt,第二个余额将是先前余额+当前余额的加法。amt..我正在寻找一种最佳的方法。我可以考虑使用函数或相关子查询,但不确定具体如何实现。
查看完整描述

3 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

如果您使用2012版本,下面是一个解决方案

select *, sum(amt) over (order by Tid) as running_total from Transactions

用于早期版本

select *,(select sum(amt) from Transactions where Tid<=t.Tid) as running_total from Transactions as t


查看完整回答
反对 回复 2019-07-09
?
冉冉说

TA贡献1877条经验 获得超1个赞

我们在2008 R2上,我使用变量和临时表。这还允许您在使用case语句计算每一行时执行自定义操作(例如,某些事务的操作可能有所不同,或者您可能只想要特定事务类型的总数)。

DECLARE @RunningBalance int = 0SELECT Tid, Amt, 0 AS RunningBalanceINTO #TxnTableFROM TransactionsORDER BY TidUPDATE #TxnTableSET @RunningBalance = RunningBalance = @RunningBalance + AmtSELECT * FROM #TxnTableDROP TABLE #TxnTable

我们有一个有230万行的事务表,其中一个项有超过3,300个事务,并且对它运行这种类型的查询根本不需要花时间。


查看完整回答
反对 回复 2019-07-09
  • 3 回答
  • 0 关注
  • 493 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信