mysql - 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
解决方案
可以使用临时表计算流动余额。可以使用以下查询:
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”的主键列。
推荐阅读
- unit-testing - 如何在单元测试(颤振)的时间间隔内测试该流发出任何东西?
- python - 当我从 rpy2 调用包时,它给了我一个错误
- jenkins - 如何使用 Jenkins 定期轮询 GitHub 存储库并通过其消息获取提交?
- postgresql - 分区中的 PostgreSQL ORDER BY column_label 行为
- javascript - 配置笑话 moduleNameMapper 不起作用
- sql - 您可以在单个 Hive 查询中放入多少个最大子查询?
- vim - 如何将特殊字符与文本一起替换?喜欢 (。,*,/,\)
- c++ - c++中map相对于堆的优势是什么
- notifications - 我想在工作日收到实时通知
- javascript - 单击 $('body').on('click') 事件后禁用单击