sql >> Databáze >  >> RDS >> Mysql

Jak sčítat a ODČÍTAT pomocí SQL?

Myslím, že tohle je to, co hledáš. NEW_BAL je součet QTY s odečteno od zůstatku:

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

Pokud chcete aktualizovat zůstatek položky novým zůstatkem, použijte následující:

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

To předpokládá, že jste odečítání zaúčtovali pozpátku; odečte množství v objednávce od zůstatku, což dává největší smysl, aniž byste věděli více o vašich tabulkách. Pokud se mýlím, stačí je vyměnit:

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


  1. Kód chyby 1005, stav SQL HY000:Nelze vytvořit tabulku errno:150

  2. Vyberte samostatné řádky ze dvou tabulek, seřaďte je podle data

  3. MySQL NET Connect 6.7.2 ve Visual Studiu 2012

  4. Jak mapovat pole pole PostgreSQL v Django ORM