计算余额

Calculate the balance

我有一个 table 交易记录。和期初余额。我需要计算期初和期末余额,查询未按预期工作。你能指导我吗?

输入:

输入 2

我需要计算期初和期末余额。 未结余额= Prev_close_balance

查询

 SELECT TRANS_ID,TRANS_AMOUNT ,open_bal,
       lag(open_bal) over ( order by TRANS_AMOUNT)-TRANS_AMOUNT prev_close
FROM trans_t a INNER JOIN open_bal  b
ON a.CUST_ID=b.CUST_ID

你想要 window 函数,但累积 sum() 而不是 lag():

SELECT t.*,
       b.open_bal + t.trans_amount - sum(t.trans_amount) over (order by t.trans_id) as open_balance,
       b.open_bal - sum(t.trans_amount) over (order by t.trans_id) as close_balance
FROM trans_t t INNER JOIN
     open_bal  b
     ON t.CUST_ID = b.CUST_ID;

逻辑很简单。对于任何给定的交易,期末余额是初始期初余额减去交易总和。期初余额只是将该交易的金额加回来。