Я хочу иметь накопительный столбец в MySQL. Когда я использую команду SQL без предложения ORDER BY, это нормально. Но с предложением ORDER BY результат неправильный.
Мой оператор SQL:
SET @LastSumFee := 1000;
SELECT HioId, ApplyDate, ApplyTime, Idx, InputFee, OutputFee, (@LastSumFee := @LastSumFee + InputFee - OutputFee) AS SumFee
FROM HsbInOutView
WHERE HnId = 9 OR LHnId = 9
LIMIT 5;
Для этого sql результат в порядке (этот результат создается с помощью phpMyAdmin):
HioId ApplyDate ApplyTime Idx InputFee OutputFee SumFee
168 1381/10/10 00:00:00 11 1085945 0 1086945
169 1381/10/21 00:00:00 12 0 600000 486945
170 1381/10/02 00:00:00 10 0 700000 -213055
171 1381/10/01 00:00:00 9 0 600000 -813055
180 1381/05/26 00:00:00 3 782040 0 -31015
Теперь, если я добавлю ORDER BY к команде SQL следующим образом:
SET @LastSumFee := 1000;
SELECT HioId, ApplyDate, ApplyTime, Idx, InputFee, OutputFee, (@LastSumFee := @LastSumFee + InputFee - OutputFee) AS SumFee
FROM HsbInOutView
WHERE HnId = 9 OR LHnId = 9
ORDER BY ApplyDate, ApplyTime, Idx
LIMIT 5;
Я получаю неправильный результат (этот результат создается с помощью phpMyAdmin):
HioId ApplyDate ApplyTime Idx InputFee OutputFee SumFee
193 1380/08/08 00:00:00 1 50000 0 4444879
1334 1380/08/08 00:00:00 36 0 50000 -6897369
194 1381/04/30 00:00:00 2 889100 0 5333979
1169 1381/04/30 00:00:00 127 0 889100 15774756
180 1381/05/26 00:00:00 3 782040 0 -31015
Ожидаю результата ниже:
HioId ApplyDate ApplyTime Idx InputFee OutputFee SumFee
193 1380/08/08 00:00:00 1 50000 0 51000
1334 1380/08/08 00:00:00 36 0 50000 1000
194 1381/04/30 00:00:00 2 889100 0 890100
1169 1381/04/30 00:00:00 127 0 889100 1000
180 1381/05/26 00:00:00 3 782040 0 783040