我想要下表的累计dr或cr余额:
+-----------+--------------+---------------+---------+
| id | Date | DR | CR |
+-----------+--------------+---------------+---------+
| 1 | 2020-01-01 | 100 | 0 |
| 2 | 2020-01-01 | 200 | 0 |
| 3 | 2020-01-02 | 0 | 200 |
| 4 | 2020-01-02 | 0 | 50 |
| 5 | 2020-01-03 | 20 | 0 |
+-----------+--------------+---------------+---------+
对于上表,累积 Balance
列将是:
+-----------+--------------+---------------+---------+----------+
| id | Date | DR | CR | Balance |
+-----------+--------------+---------------+---------+----------+
| 1 | 2020-01-01 | 100 | 0 | 100 DR |
| 2 | 2020-01-01 | 200 | 0 | 300 DR |
| 3 | 2020-01-02 | 0 | 300 | 0 DR |
| 4 | 2020-01-02 | 0 | 50 | 50 CR |
| 5 | 2020-01-03 | 20 | 0 | 30 CR |
+-----------+--------------+---------------+---------+----------+
将dr降低到0以下将使其成为cr
将cr降低到0以下将使其成为dr
如果余额为0,则值为 0 DR
它可以被计算为cr是一个负值,但是我想在一个 abs
数值。
mysql版本14.14发行版5.7.23,用于linux(x86\u 64),使用editline Package 器
谢谢你的帮助
1条答案
按热度按时间q0qdq0h21#
如果您运行的是mysql 8.0,则可以使用窗口函数:
在早期版本中,一个有效的选项使用会话变量:
db fiddle上的演示-两个查询都产生: