2016-04-21 148 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 
相關問題