Ich arbeite an diesem SQL-Problem:SQL-Problem mit Aggregatfunktionen in Where-Klausel
Zeigen Sie alle Bestellungen, deren geladene Menge und tatsächliche Menge unterschiedlich sind. Zeigen Sie dies, indem Sie die Bestellnummer, den Bestellbetrag für jede Bestellung, den tatsächlichen Betrag (berechnet durch Hinzufügen der Preise aller Artikel in der Bestellung) und die Differenz zwischen den beiden anzeigen. Sortieren Sie die Ergebnisse, um zuerst die mit den größten Unterschieden anzuzeigen.
Ich erhalte den folgenden Code, wenn Sie die Anweisung unter SQL ausgeführt wird:
Fehlercode -1, SQL-Status 42903: Ungültige Verwendung einer Aggregatfunktion.
select
purchaseorder.ponum,
purchaseorder.amount,
sum(poitems.quantity*poitems.unitprice),
purchaseorder.amount-sum(poitems.quantity*poitems.unitprice)
from purchaseorder, poitems
where
purchaseorder.ponum = poitems.ponum
and purchaseorder.amount!=sum(poitems.quantity*poitems.unitprice)
group by
purchaseorder.ponum,
purchaseorder.amount
Ich denke, es ist, weil ich eine Aggregatfunktion in meiner WHERE-Klausel verwende.
Wie kann ich dieses Problem beheben ???
Danke,
ist 'Menge' immer größer als' tatsächliche'? Sonst könnten Sie 'order by ABS (diff)' oder etwas Ähnliches abhängig von Ihrem SQL-Stil wünschen – tobyodavies