Dies ist meine SQL-Abfrage, die zwei Tabellen verknüpft:Wie aggregierte SUM-Funktion auf das Ergebnis von SUM in INNER JOIN zu verwenden?
SELECT `o`.`orderID`,
SUM(i.partialAmount) AS `amount`
FROM `OrderTable` AS `o`
INNER JOIN `Item` AS `i`
ON i.orderID = o.orderID
GROUP BY `o`.`orderID`
Artikel auf Aufträge über 1-zu-viele-Beziehung verbunden sind. Jeder Artikel hat eine partialAmount-Spalte und ich addiere diese Teilbeträge, um einen Gesamtbetrag für jede Bestellung zu erhalten.
Ich möchte aber einen Gesamtbetrag für alle Bestellungen bekommen, wie geht das?
So würde Ich mag so etwas wie: SUM (Betrag) AS totalAmount
aber das funktioniert nicht:
SELECT `o`.`orderID`,
SUM(i.partialAmount) AS `amount`,
SUM(amount) AS `totalAmount`
FROM `OrderTable` AS `o`
INNER JOIN `Item` AS `i`
ON i.orderID = o.orderID
GROUP BY `o`.`orderID`
Ich will nicht mit ROLLUP verwenden - weil ich nicht eine zusätzliche Zeile wollen .
Erwarteter Ausgang:
-----------------------------------------------------------------------
| orderID | amount | totalAmount |
-----------------------------------------------------------------------
| 1 | 2 | 5 |
-----------------------------------------------------------------------
| 2 | 3 | 5 |
-----------------------------------------------------------------------
hmmm ... was ist falsch mit Rollup? – ajreal
Nicht sicher, dass Sie alle drei in einer Abfrage erhalten können. Die ersten zwei Spalten, die Sie auswählen, haben mehrere Zeilen mit mehreren unterschiedlichen Werten. Die dritte Spalte, die Sie auswählen, hat eine Zeile mit einem einzelnen Wert. Wie möchten Sie, dass diese Daten Ihnen präsentiert werden? Soll der gleiche Wert für die dritte Spalte in jeder Zeile wiederholt werden? – Travesty3
@ Travestie3 Ja. –