[英]Need to calculate running balance of debit
我正在為1個帳戶項目工作,但我停留在1個地方。
表借記
ID Debit Credit A B C
1 1000.00 900.00 0 0 1000.00
2 450.00 425.00 0 450.00 0
3 500.00 490.00 500.00 0 0
4 600.00 599.00 600.00 0 0
5 748.00 700.00 0 748.00 0
Now if we sum the credit it will be = 3114,
What I have to do here is whatever total credit I have it has to start from top (A+B+C) - 3114
So It will make C = 0 and my new credit will be 3114-1000=2114,
Then in my id=2 it will do the same thing (A+B+C) - 2114
so now B will be 0 and my new credit will be 2114-450=1664
我的最終輸出在所有計算之后應該是
ID Debit Credit A B C
1 1000.00 900.00 0 0 0.00
2 450.00 425.00 0 0.00 0
3 500.00 490.00 0.00 0 0
4 600.00 599.00 0.00 0 0
5 748.00 700.00 0 184.00 0
如果我們嘗試(總和A +總和B +總和C)-貸方,數字將相同,但將出現在A列中。因此,在進行所有頭腦風暴之后,我認為必須應用上述計算。
有誰知道如何實現這一目標。
任何幫助,將不勝感激。
SQL Server僅支持MSSQL 2012版本中的分析函數SUM() OVER
,因此對於2008年,這可能是查詢結果的一種方法:
WITH table_name AS
(
SELECT 1 ID, 000.00 Debit, 900.00 Credit, 0 a, 0 b, 1000.00 c UNION ALL
SELECT 2 ID, 450.00 Debit, 425.00 Credit, 0 a, 450.00 b, 0 c UNION ALL
SELECT 3 ID, 500.00 Debit, 490.00 Credit, 500.00 a, 0 b, 0 c UNION ALL
SELECT 4 ID, 600.00 Debit, 599.00 Credit, 600.00 a, 0 b, 0 c UNION ALL
SELECT 5 ID, 748.00 Debit, 700.00 Credit, 0 a, 748.00 b, 0 c
)
,
sum_credit AS
(
SELECT SUM(credit) sumcredit
FROM table_name
)
SELECT t.id, t.debit, t.credit,
CASE WHEN a = 0
OR ( (SELECT COALESCE(SUM(a + b + c), 0) FROM table_name WHERE id < t.id)
+ a - sc.sumcredit < 0
)
THEN 0
ELSE (SELECT COALESCE(SUM(a + b + c), 0) FROM table_name WHERE id < t.id)
+ a - sc.sumcredit
END a,
CASE WHEN b = 0
OR ( (SELECT COALESCE(SUM(a + b + c), 0) FROM table_name WHERE id < t.id)
+ a + b - sc.sumcredit < 0
)
THEN 0
ELSE (SELECT COALESCE(SUM(a + b + c), 0) FROM table_name WHERE id < t.id)
+ a + b - sc.sumcredit
END b,
CASE WHEN c = 0
OR ( (SELECT COALESCE(SUM(a + b + c), 0) FROM table_name WHERE id < t.id)
+ a + b + c - sc.sumcredit < 0
)
THEN 0
ELSE (SELECT COALESCE(SUM(a + b + c), 0) FROM table_name WHERE id < t.id)
+ a + b + c - sc.sumcredit
END c
FROM
table_name t
CROSS JOIN
sum_credit sc;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.