Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

SQL:ADD &MINUS com base no tipo de campo


Você pode usar uma variável para manter o valor 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 

A consulta acima assume que existem apenas dois tipos de ACTION_TYPE valores, ou seja, 'ADD' e 'DEDUCT' . Portanto, se ACTION_TYPE não é igual a 'ADD' , então é igual a 'DEDUCT' .

Demonstração aqui