Puoi utilizzare una variabile per trattenere l'importo cumulativo:
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
La query precedente presuppone che ci siano solo due tipi di ACTION_TYPE
valori, ovvero 'ADD'
e 'DEDUCT'
. Quindi, se ACTION_TYPE
non è uguale a 'ADD'
, allora è uguale a 'DEDUCT'
.