计算余额
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;
逻辑很简单。对于任何给定的交易,期末余额是初始期初余额减去交易总和。期初余额只是将该交易的金额加回来。
我有一个 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;
逻辑很简单。对于任何给定的交易,期末余额是初始期初余额减去交易总和。期初余额只是将该交易的金额加回来。