Vous pouvez utiliser une variable pour conserver le montant cumulé :
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 requête ci-dessus suppose qu'il n'y a que deux types de ACTION_TYPE
valeurs, à savoir 'ADD'
et 'DEDUCT'
. Par conséquent, si ACTION_TYPE
n'est pas égal à 'ADD'
, alors il est égal à 'DEDUCT'
.