2016-04-21 149 views
0

我有两个字段,例如在一个表中记入借方。 ,我需要总结他们,让导致在每一行,例如:如何在内联结果中总结两个字段?

date   debit credit amount 
2015/01/01  20  0  20 
2015/01/02  0  5  15 
2015/01/03  0  30  -15 

我希望你能帮助我通过查询来获取量 感谢

+2

这应该回答你的问题:http://stackoverflow.com/questions/ 2120544/how-to-get-cumulative-sum – fafl

+0

您是否尝试编写一些代码? – purplepsycho

+0

什么dbms? (MySQL,SQL Server等) – SQLChao

回答

0

随着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] 
+0

此代码帮助我很好。但我有另一个问题,我如何过滤日期,并获得真实结果例如我过滤日期从2015/01/02,我想得到结果-15在我的金额你能帮我这个? –

0

我与蒂姆的答案达成一致,我添加了一些额外的线路:

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 
相关问题