Mysql
 sql >> Base de données >  >> RDS >> Mysql

SQL :AJOUTER et MOINS en fonction du type de champ

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' .

Démo ici