2017-07-02 3 views
-1
Select c.CustomerName, pl.ProductName as 'Product Name', o.OrderDate as 'Order date', 
Count([Address]) as 'No of Places', SUM(pl.Price * od.OrderQty) as 'Total Amount' 
From Customer c 
Inner Join [Order] o ON o.CustomerId = c.CustomerID 
Inner Join OrderDetails od ON od.OrderId = o.OrderID 
Inner Join ProductList pl ON pl.ProductID = od.ProductId 
where c.CustomerID = (select cc.CustomerID from Customer cc where 
cc.CustomerName = 'Mr.A') 

Aber zeigt diesen FehlerZeigt diesen Fehler, wenn ich folgenden SQL-Code ausführen? Ich versuche, diesen Code durch Unter Abfrage

Msg 8120, Ebene 16, Status 1, Zeile 1 zu lösen Spalte ‚Customer.CustomerName‘ ist ungültig in der Auswahlliste, weil Es ist weder in einer Aggregatfunktion noch in der GROUP BY-Klausel enthalten.

+3

jedes Mal, wenn Sie wie Aggregatfunktionen (Summe, Anzahl ... etc) Sie Gruppierung für den Rest verwenden müssen der Spalten, die Sie auswählen, –

Antwort

1

Sie haben vergessen, die Gruppe durch Klausel angeben, versuchen Sie dies:

Select c.CustomerName, pl.ProductName as 'Product Name', o.OrderDate as 'Order date', 
Count([Address]) as 'No of Places', SUM(pl.Price * od.OrderQty) as 'Total Amount' 
From Customer c 
Inner Join [Order] o ON o.CustomerId = c.CustomerID 
Inner Join OrderDetails od ON od.OrderId = o.OrderID 
Inner Join ProductList pl ON pl.ProductID = od.ProductId 
Inner join Customer cc on c.CustomerID=cc.CustomerID and cc.CustomerName = 'Mr.A' 
group by c.CustomerName, pl.ProductName, o.OrderDate 
+0

, aber ich möchte dieses Problem mithilfe von SubQuery lösen, die Sie in diesem Code nicht verwendet haben. –

+0

es ist die gleiche, Unterabfrage oder nicht ... Verwenden Sie Ihre Abfrage, aber fügen Sie Gruppe von mit Spalten wie meine Abfrage – Esperento57

+0

schließlich löse ich es, danke. –

Verwandte Themen