sql >> Base de Datos >  >> RDS >> Mysql

SQL:ADD &MINUS basado en el tipo de campo

Puede usar una variable para retener la cantidad acumulada:

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 consulta anterior asume que solo hay dos tipos de ACTION_TYPE valores, a saber, 'ADD' y 'DEDUCT' . Por lo tanto, si ACTION_TYPE no es igual a 'ADD' , entonces es igual a 'DEDUCT' .

Demostración aquí