Вот мой sql и вывод моего запроса...
SQL:
SELECT
id ID,
token TK,
actual_pay PAY,
IF(@rtp IS NULL, @rtp:=token, @rtp:=@bal+actual_pay) RTP,
IF(@bal IS NULL, @bal:=actual_pay-token, @bal:=@rtp-token) BAL
FROM token_table a
JOIN (SELECT @rtp:=NULL, @bal:=NULL) b;
Выход:
+----+------+-----+------+------+
| ID | TK | PAY | RTP | BAL |
+----+------+-----+------+------+
| 1 | 500 | 900 | 500 | 400 |
| 2 | 1200 | 900 | 1300 | 100 |
| 3 | 900 | 900 | 1000 | 100 |
| 4 | 900 | 900 | 1000 | 100 |
| 5 | 400 | 900 | 1000 | 600 |
| 6 | 300 | 900 | 1500 | 1200 |
| 7 | 500 | 900 | 2100 | 1600 |
| 8 | 1700 | 900 | 2500 | 800 |
| 9 | 1800 | 900 | 1700 | -100 |
| 10 | 800 | 900 | 800 | 0 |
| 11 | 900 | 900 | 900 | 0 |
| 12 | 0 | 850 | 850 | 850 |
+----+------+-----+------+------+
Вот результат, который я хочу получить...
Проблема:
1. Формула поля статистики: Если значение BAL(из ID=1) меньше или равно значению TK(из ID=2), если да, то значение должно быть 1, если иначе значение должно быть 0.
2. Формула поля nbal: Если значение BAL(из ID=1) меньше или равно значению TK(из ID=2), если да, то значение должно быть 0, в противном случае значение должно быть BAL(от ID=1) минус TK(от ID=2).
3. Формула поля ntk: Если значение BAL(от ID= 1) меньше или равно значению TK(из ID=2), если да, значение должно быть TK(из ID=2) минус BAL(из ID=1), в противном случае значение должно быть BAL(из ID=2) =1) минус ТК(из ID=2).
+----+------+-----+------+------+------+------+------+
| ID | TK | PAY | RTP | BAL | stat | nbal | ntk |
+----+------+-----+------+------+------+------+------+
| 1 | 500 | 900 | 500 | 400 | 1 | 0 | 0 |
| 2 | 1200 | 900 | 1300 | 100 | 1 | 0 | 800 |
| 3 | 900 | 900 | 1000 | 100 | 1 | 0 | 800 |
| 4 | 900 | 900 | 1000 | 100 | 1 | 0 | 800 |
| 5 | 400 | 900 | 1000 | 600 | 0 | 300 | 300 |
| 6 | 300 | 900 | 1500 | 1200 | 0 | 700 | 0 |
| 7 | 500 | 900 | 2100 | 1600 | 1 | 0 | 0 |
| 8 | 1700 | 900 | 2500 | 800 | 1 | 0 | 100 |
| 9 | 1800 | 900 | 1700 | -100 | 1 | 0 | 1000 |
| 10 | 800 | 900 | 800 | 0 | 1 | 0 | 900 |
| 11 | 900 | 900 | 900 | 0 | 1 | 0 | 900 |
| 12 | 0 | 850 | 850 | 850 | 0 | 850 | 0 |
+----+------+-----+------+------+------+------+------+