-1

mysql にこのようなテーブルがあり、id、credit、および debit の 3 つのフィールドしか存在しません。現在の残高を以下の例の列のように計算したいのですが、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

出力:

+------+--------+-------+---------------------+--- ------+
| | ID | クレジット | 借方 | 時間 | バランス |
+------+--------+-------+---------------------+--- ------+
| | 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 に答える