Diese Frage ist Upgrade-Version here. Die Lösung von Herrn Giorgos Betsos funktioniert gut. Wie auch immer, ich habe meine Anforderung aktualisiert, um nach PRODUCT_ID zu filtern. suchen jetzt neue Tabelle wie dieseSQL: ADD & MINUS basierend auf Feldtyp mit GROUP BY-Bedingung
ID | BALANCE | ACTION_QTY | ACTION_TYPE | PRODUCT_ID |
---------------------------------------------------------------------|
1 | 0 | 3 | ADD | 12 |
2 | 0 | 2 | DEDUCT | 12 |
3 | 0 | 6 | ADD | 11 |
4 | 0 | 3 | ADD | 11 |
5 | 0 | 1 | DEDUCT | 12 |
6 | 0 | 7 | ADD | 15 |
7 | 0 | 1 | DEDUCT | 15 |
8 | 0 | 3 | ADD | 15 |
9 | 0 | 7 | DEDUCT | 11 |
10 | 0 | 9 | ADD | 12 |
Wie kann ich tun, um das Add/minus zu BALANCE Feld basierend auf PRODUCT_ID und Ordnung von ID? @Giorgos Betsos SQL:
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
ich versuchte GROUP BY PRODUCT_ID, aber das Ergebnis ist nicht korrekt hinzuzufügen.
Ergebnis, das ich will, ist unten wie:
ID | BALANCE | ACTION_QTY | ACTION_TYPE | PRODUCT_ID |
---------------------------------------------------------------------|
1 | 3 | 3 | ADD | 12 |
2 | 1 | 2 | DEDUCT | 12 |
3 | 6 | 6 | ADD | 11 |
4 | 9 | 3 | ADD | 11 |
5 | 0 | 1 | DEDUCT | 12 |
6 | 7 | 7 | ADD | 15 |
7 | 6 | 1 | DEDUCT | 15 |
8 | 9 | 3 | ADD | 15 |
9 | 2 | 7 | DEDUCT | 11 |
10 | 9 | 9 | ADD | 12 |
Bitte helfen Sie mir, Vielen Dank
Arbeit perfekt :) final SQL ausführen: http: //sqlfiddle.com/#!9/2ceae6/11 – Teddybugs