Ich möchte den Kundennamen anzeigen, wenn der Gesamtpreis höher als der Durchschnittspreis jeder Transaktion ist. Aber die Fehlermeldung lautet "Spalte 'x.average' ist in der HAVING-Klausel ungültig, da sie weder in einer Aggregatfunktion noch in der GROUP BY-Klausel enthalten ist." und ich weiß nicht, wo die Probleme sind.Wie wird der Kundenname für jede Transaktion angezeigt, deren Gesamtpreis höher ist als der Durchschnittspreis?
Hier ist mein Code
SELECT c.CustomerId,
hs.TransactionId,
c.CustomerName,
SUM(t.Price) AS [Total Price]
FROM MsCustomer c JOIN HeaderSalonServices hs
ON c.CustomerId = hs.CustomerId
JOIN DetailSalonServices ds
ON ds.TransactionId = hs.TransactionId
JOIN MsTreatment t
ON t.TreatmentId = ds.TreatmentId,
(SELECT AVG(Price) AS average
FROM MsTreatment) AS x
GROUP BY c.CustomerId, hs.TransactionId, c.CustomerName
HAVING SUM(t.Price) > average
Durchschnitt nur innerhalb der Unterabfrage definiert ist, sondern nur Ihre umbenannt in "x" verwenden. ;-) – flowtron
Siehe http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-very-simple -SQL-Abfrage – Strawberry