Предполагая, что ваш столбец trx_no
будет всегда иметь фиксированную ширину в 5 символов, и что лексикографическая сортировка указывает возраст транзакции, тогда мы можем попытаться использовать коррелированный подзапрос, чтобы найти скользящийбаланс:
SELECT
trx_no,
Opening,
debit,
credit,
Opening + (SELECT SUM(t2.credit - t2.debit)
FROM yourTable t2
WHERE t2.trx_no <= t1.trx_no) AS balance
FROM yourTable t1
ORDER BY
trx_no;
Если вы используете MySQL 8+, то оконные функции делают это немного менее многословным:
SELECT
trx_no,
Opening,
debit,
credit,
Opening +
SUM(credit - debit) OVER (OVER ORDER BY trx_no) AS balance
FROM yourTable t1
ORDER BY
trx_no;