我有两个字段,例如在一个表中记入借方。 ,我需要总结他们,让导致在每一行,例如:如何在内联结果中总结两个字段?
date debit credit amount
2015/01/01 20 0 20
2015/01/02 0 5 15
2015/01/03 0 30 -15
我希望你能帮助我通过查询来获取量 感谢
我有两个字段,例如在一个表中记入借方。 ,我需要总结他们,让导致在每一行,例如:如何在内联结果中总结两个字段?
date debit credit amount
2015/01/01 20 0 20
2015/01/02 0 5 15
2015/01/03 0 30 -15
我希望你能帮助我通过查询来获取量 感谢
随着SQL-Server 2012中或更高版本,你可以使用此:
SELECT [date], debit, credit, amount,
SUM(debit-credit) OVER(ORDER BY [date] ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS amount
FROM TableName
ORDER BY [date]
阅读:OVER
-clause,尤其是部分
与其他VERS离子你必须使用一个相关子查询:
SELECT [date], debit, credit, amount,
(SELECT SUM(debit-credit)
FROM TableName t2
WHERE [date] <= t1.[date]) AS amount
FROM TableName t1
ORDER BY [date]
此代码帮助我很好。但我有另一个问题,我如何过滤日期,并获得真实结果例如我过滤日期从2015/01/02,我想得到结果-15在我的金额你能帮我这个? –
我与蒂姆的答案达成一致,我添加了一些额外的线路:
declare @credit as table (
[date] datetime,
amount int
)
declare @debit as table (
[date] datetime,
amount int
)
insert into @debit values
('2015-01-01', 20)
insert into @credit values
('2015-01-02', 5),
('2015-01-03', 30)
select
[date], debit, credit, SUM(debit-credit) OVER(ORDER BY [date] ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS amount
from(
select
[date], sum(debit) debit, sum(credit) credit
from
(
select
[date], 0 credit, d.amount debit
from
@debit d
union all
select
[date], c.amount credit, 0 debit
from
@credit c
) j group by j.date
) x
这应该回答你的问题:http://stackoverflow.com/questions/ 2120544/how-to-get-cumulative-sum – fafl
您是否尝试编写一些代码? – purplepsycho
什么dbms? (MySQL,SQL Server等) – SQLChao