Możesz użyć zmiennej do przechowywania łącznej kwoty:
SELECT ID,
@s := IF(ACTION_TYPE='ADD', @s + ACTION_QTY, @s - ACTION_QTY) AS BALANCE,
ACTION_QTY,
ACTION_TYPE
FROM tableA
CROSS JOIN (SELECT @s := 0) AS var
ORDER BY ID
Powyższe zapytanie zakłada, że istnieją tylko dwa typy ACTION_TYPE
wartości, a mianowicie 'ADD'
i 'DEDUCT'
. Dlatego jeśli ACTION_TYPE
nie jest równe 'ADD'
, to jest równe 'DEDUCT'
.