我有兩個字段,例如在一個表中記入借方。 ,我需要總結他們,讓導致在每一行,例如:如何在內聯結果中總結兩個字段?
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