2013-06-28 2 views
-1

У меня есть таблица, подобная этой в mysql, где только три идентификатора поля, кредит и дебетование существуют сейчас, я хочу рассчитать текущий баланс, как показано ниже в столбце examp, и показать, как я хочу 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) 
+0

нечто подобное здесь ответа HTTP: //stackoverflow.com/questions/9394418/calculate-balance-with-mysql ... для вашего конкретного tas k, вам нужно как-то сгруппировать текущий баланс по id в приведенном выше решении – Saad

+0

, ваш вопрос неясен. – DevZer0

+0

И что вы от нас хотите? –

ответ

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 | credit | debit | time    | balance | 
+------+--------+-------+---------------------+---------+ 
| 1 | 100 | NULL | 2013-01-06 11:11:00 |  100 | 
| 1 | NULL | 50 | 2013-01-06 13:14:00 |  50 | 
| 1 |  20 | NULL | 2013-02-06 10:10:00 |  70 | 
| 2 | 200 | NULL | 2013-01-06 11:12:00 |  200 | 
| 2 | 100 | NULL | 2013-01-06 11:14:00 |  300 | 
| 2 | NULL | 150 | 2013-02-06 10:10:00 |  150 | 
+------+--------+-------+---------------------+---------+ 

Вот SQLFiddle демо

+0

Я не знал, что был SQLFiddle тоже .. спасибо за это :) –

+0

Он работает для мне спасибо ............... –

+0

@ user2481959 Вы более чем рады. Я рад, что смог помочь :) – peterm