簡體   English   中英

如何計算貸方和借方的余額?

[英]How to calculate balance from credit and debit?

如何根據信用獲得余額CRD和借記DEB為每個客戶cust從以下txn_tbl

SQL> SELECT * FROM txn_tbl;

CUS        AMT TXN_CDE
--- ---------- ----------
A          500 CRD
B          400 CRD
A          350 CRD
C          235 DEB
C          800 CRD
B          132 DEB
D          673 CRD

這是我試過的查詢

SELECT cust, LAG(amt,1,0) OVER (PARTITION BY cust ORDER BY cust) "Bal"
 FROM 
(SELECT cust, SUM(amt)amt
 FROM txn_tbl
 GROUP BY cust, txn_cde
 ORDER BY 2);

如果您想要運行余額,您可以使用條件邏輯進行窗口總和:

select 
    t.*,
    sum(case when txn_cde = 'CRD' then amt else -amt end) 
        over(partition by cus order by id) running_balance
from mytable

為此,您需要一個可用於對記錄進行排序的列; 我假設id

另一方面,如果您想要每個客戶的總體余額(因此結果集中每個客戶只有一個記錄),您可以使用與聚合相同的邏輯(並且您不需要排序列):

select cus, sum(case when txn_cde = 'CRD' then amt else -amt end) balance
from mytable
group by cus

你可以總結一下你的金額。 訣竅是使您的信用(或借方,尚不清楚)成為負數:

SELECT cust, Sum(CASE WHEN TXN_CODE = 'DEB' THEN -1 ELSE 1 END * amt) as
FROM txn_tbl 
GROUP BY cust

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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