首页 > 解决方案 > Mysql查询计算运行余额

问题描述

大家好,我希望有人能帮助我。我有 1 个表,我想创建一个 mysql 查询,该查询将在最后一个列中添加一个列,该列将计算存入金额的运行余额和支票发行金额(存入金额 - 支票发行金额)= RUNNING BALANCE

-------------------------------------------------------------------------
| Date_Deposited | deposited_amount | Date_Cheque_Issued | issued_amount |
-------------------------------------------------------------------------
   May 16, 2019        1,000.00          May 16, 2019          500.00
                                         May 17, 2019          100.00
   May 18 2019         1,000.00 

我希望在最后一个 BALANCE 列中创建这种表

------------------------------------------------------------------------------
| Date_Deposited | deposited_amount | Date_Cheque_Issued | issued_amount | Bal |
-------------------------------------------------------------------------
May 16, 2019        1,000.00          May 16, 2019       500.00         500.00                                           
                                      May 17, 2019       100.00         400.00
May 18 2019         1,000.00                                          1,400.00

标签: mysql

解决方案


可以使用临时表计算流动余额。可以使用以下查询:

create TEMPORARY table tbl_temp (select * from tbl);
update tbl t1 set t1.Bal=(SELECT SUM(t2.deposited_amount-t2.issued_amount) FROM tbl_temp t2 WHERE t2.id<=t1.id);
select * from tbl;

需要一个临时表,因为要更新的表将在更新期间被锁定,因此它不能同时用于更新和选择。请注意,临时表仅在连接到 MySQL 服务器期间存在。

上面的查询使用子查询,它返回临时表中所有行的余额,包括当前行。余额分配给实际表中的当前行。该查询假定 tbl 表有一个名为“id”的主键列。


推荐阅读