Mysql
 sql >> Datenbank >  >> RDS >> Mysql

SQL:ADD &MINUS basierend auf dem Feldtyp

Sie können eine Variable verwenden, um den kumulativen Betrag zu halten:

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 

Die obige Abfrage geht davon aus, dass es nur zwei Arten von ACTION_TYPE gibt Werte, nämlich 'ADD' und 'DEDUCT' . Wenn also ACTION_TYPE ist nicht gleich 'ADD' , dann ist es gleich 'DEDUCT' .

Demo hier