Mam tabele:
id data kwota waluta komentarz
1 | 2018-07-11 | 30 | PLN | AAA
2 | 2018-07-12 | 40 | PLN | BBB
3 | 2018-07-13 | 20 | PLN | CCC
4 | 2018-07-14 | 10 | PLN | DDD
5 | 2018-07-15 | 15 | PLN | EEE
Zapytaniem :
SELECT t.id, t.DATA, t.kwota, t.waluta, t.komentarz, @running_total := @running_total + t.kwota AS stan_kasy FROM kasa t JOIN (SELECT @running_total := 0) r WHERE t.waluta="PLN" ORDER BY t.id ASC;
Otrzymuję:
id data kwota waluta komentarz | stan kasy
1 | 2018-07-11 | 30 | PLN | AAA | 30
2 | 2018-07-12 | 40 | PLN | BBB | 70
3 | 2018-07-13 | 20 | PLN | CCC | 90
4 | 2018-07-14 | 10 | PLN | DDD | 100
5 | 2018-07-15 | 15 | PLN | EEE | 115
Do tego momentu wszystko działa dobrze. Ale jak wybiorę zakres dat zaptaniem:
SELECT t.id, t.DATA, t.kwota, t.waluta, t.komentarz, @running_total := @running_total + t.kwota AS stan_kasy FROM kasa t JOIN (SELECT @running_total := 0) r WHERE t.waluta='PLN' AND t.DATA BETWEEN '2018-07-13' AND '2018-07-14' ORDER BY t.id ASC;
Otrzymam wynik:
id data kwota waluta komentarz | stan kasy
3 | 2018-07-13 | 20 | PLN | CCC | 20
4 | 2018-07-14 | 10 | PLN | EEE | 30
A chciałem uzyskać cos takiego: Czyli pozycja ID 1, 2 laczy się razem i sumuje swoj wynik i jako ID 2, później jest ID 3 i 4.
2 | 2018-07-13 | 70 | PLN | xxx | 70
3 | 2018-07-13 | 20 | PLN | CCC | 90
4 | 2018-07-14 | 10 | PLN | EEE | 100