sql >> Database >  >> RDS >> Mysql

Hoe SOM en AFTREKKEN met SQL?

Ik denk dat dit is wat je zoekt. NEW_BAL is de som van QTY s afgetrokken van het saldo:

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

Als u het artikelsaldo wilt bijwerken met het nieuwe saldo, gebruikt u het volgende:

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

Dit veronderstelt dat je de aftrekking achterstevoren hebt geboekt; het trekt de hoeveelheden in de volgorde van de balans af, wat het meest logisch is zonder meer te weten over uw tabellen. Verwissel die twee gewoon om het te veranderen als ik het mis had:

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


  1. Deze SELECT-query duurt 180 seconden om te voltooien

  2. Hoe voorkomt SQLParameter SQL-injectie?

  3. Gemeenschappelijke tabelexpressie in MySQL

  4. Schrijfoptimalisaties voor Qualcomm Centriq 2400 in MariaDB 10.3.5 Release Candidate