Если вы хотите, чтобы баланс выполняется , вы можете сделать сумму окна с условными логами c:
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
.
С другой стороны, если вы хотите, чтобы общий баланс на одного клиента (так, только одна запись на клиента в наборе результатов), вы можете использовать тот же лог c с агрегацией (и вам не нужен заказывающий столб):
select cus, sum(case when txn_cde = 'CRD' then amt else -amt end) balance
from mytable
group by cus