簡體   English   中英

需要計算借方的余額

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM