【发布时间】:2019-10-18 13:19:41
【问题描述】:
是否可以使用 MySql 查询来避免负余额? 我有以下 MySql 表:
trx_no trx_date 期初借方贷方 1 2019-10-01 200 0 100 2 2019-10-02 200 0 100 3 2019-10-03 200 100 0 4 2019-10-03 200 400 0 5 2019-10-03 200 0 200 6 2019-10-04 200 0 100 7 2019-10-05 200 0 400使用此查询:
SELECT
trx_no,
trx_date,
Opening,
debit,
credit,
Opening + (SELECT SUM(t2.credit - t2.debit)
FROM MyTable t2
WHERE t2.trx_no <= t1.trx_no) AS balance
FROM MyTable t1
ORDER BY
trx_no;
我明白了:
trx_no trx_date Opening debit credit balance
1 2019-10-01 200 0 100 300
2 2019-10-02 200 0 100 400
3 2019-10-03 200 100 0 300
4 2019-10-03 200 400 0 -100
5 2019-10-03 200 0 200 100
6 2019-10-04 200 0 100 200
7 2019-10-05 200 0 400 600
您可以看到 2019-10-03 存在负余额 (-100)。 是否可以通过首先允许贷方计算 如果同一日期有借方和贷方来进行mysql查询以避免负余额?所以结果会变成:
trx_no trx_date Opening debit credit balance
1 2019-10-01 200 0 100 300
2 2019-10-02 200 0 100 400
5 2019-10-03 200 0 200 600
3 2019-10-03 200 100 0 500
4 2019-10-03 200 400 0 100
6 2019-10-04 200 0 100 200
7 2019-10-05 200 0 400 600
【问题讨论】:
-
您想要达到的目标并不完全清楚。您能否详细说明使用单个交易号?
-
你的MySql是什么版本的?
-
您好,我不想看到报表出现负余额。成就,如果在同一日期内有借记和贷记交易,则应先计算贷记交易
-
嗨@forpas,我使用的是MySql server 5.7