我需要你帮我做一个 sql 查询来计算余额。 请查看我下面的表格。 “opening”仅在第一次计算时使用。
非常感谢
这是我的 table
trx_no Opening debit credit
ab123 200 0 100
ab456 200 0 50
ab789 200 0 50
cd123 200 50 0
cd456 200 0 10
cd789 200 0 40
这是预期的结果
trx_no Opening debit credit balance
ab123 200 0 100 300
ab456 200 0 50 350
ab789 200 0 50 400
cd123 200 50 0 350
cd456 200 0 10 360
cd789 200 0 40 400
最佳答案
假设您的 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;
关于mysql - 用于计算开仓当前余额的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58095683/