sql >> Databasteknik >  >> RDS >> Mysql

SQL :ADD &MINUS baserat på fälttyp

Du kan använda en variabel för att hålla det ackumulerade beloppet:

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 

Ovanstående fråga förutsätter att det bara finns två typer av ACTION_TYPE värden, nämligen 'ADD' och 'DEDUCT' . Därför, om ACTION_TYPE är inte lika med 'ADD' , då är det lika med 'DEDUCT' .

Demo här




  1. MySQL-NYCKEL/UNIK KEY

  2. Varför har Oracle varchar2 en obligatorisk storlek som definitionsparameter?

  3. Släpp en roll med privilegier

  4. Hur hämtar man radräkning i PHP i Mysql Database?