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

Wie summiere und subtrahiere ich mit SQL?

Ich denke, das ist, was Sie suchen. NEW_BAL ist die Summe von QTY s vom Guthaben abgezogen:

SELECT   master_table.ORDERNO,
         master_table.ITEM,
         SUM(master_table.QTY),
         stock_bal.BAL_QTY,
         (stock_bal.BAL_QTY - SUM(master_table.QTY)) AS NEW_BAL
FROM     master_table INNER JOIN
         stock_bal ON master_bal.ITEM = stock_bal.ITEM
GROUP BY master_table.ORDERNO,
         master_table.ITEM

Wenn Sie den Artikelsaldo mit dem neuen Saldo aktualisieren möchten, verwenden Sie Folgendes:

UPDATE stock_bal
SET    BAL_QTY = BAL_QTY - (SELECT   SUM(QTY)
                            FROM     master_table
                            GROUP BY master_table.ORDERNO,
                                     master_table.ITEM)

Dies setzt voraus, dass Sie die Subtraktion rückwärts gebucht haben; Es subtrahiert die Mengen in der Bestellung vom Saldo, was am sinnvollsten ist, ohne mehr über Ihre Tabellen zu wissen. Tauschen Sie einfach diese beiden aus, um es zu ändern, wenn ich mich geirrt habe:

(SUM(master_table.QTY) - stock_bal.BAL_QTY) AS NEW_BAL