-1

我在 mysql 中有一个这样的表,其中只有三个字段 id、credit 和 debit 现在我想计算当前余额,如下面的示例列中所示,我显示我希望 mysql 如何计算它将搜索上一次当前余额。表按时间排序.....

id  credit  debit   Time                balance  Examp
1   100             1/6/2013 11:11      100 
1           50      1/6/2013 13:14      50      (100-50)
1   20              2/6/2013 10:10      70      (50+20)
2   200             1/6/2013 11:12      200
2   100             1/6/2013 11:14      300     (200 + 100)
2           150     2/6/2013 10:10      150     (300 -150)
4

1 回答 1

3

尝试

SELECT id, credit, debit, time, balance
FROM
(
  SELECT t.*, @n := IF(@g <> id, 0, @n) + COALESCE(credit,0) - COALESCE(debit, 0) balance, @g := id
    FROM table1 t, (SELECT @n := 0) n, (SELECT @g := 0) g
   ORDER BY id, time
) q

输出:

+--------+--------+--------+---------+--- ------+
| 编号 | 信用 | 借方| 时间 | 余额|
+--------+--------+--------+---------+--- ------+
| 1 | 100 | 空 | 2013-01-06 11:11:00 | 100 |
| 1 | 空 | 50 | 2013-01-06 13:14:00 | 50 |
| 1 | 20 | 空 | 2013-02-06 10:10:00 | 70 |
| 2 | 200 | 空 | 2013-01-06 11:12:00 | 200 |
| 2 | 100 | 空 | 2013-01-06 11:14:00 | 300 |
| 2 | 空 | 150 | 2013-02-06 10:10:00 | 150 |
+--------+--------+--------+---------+--- ------+

这是SQLFiddle演示

于 2013-06-28T07:48:51.043 回答