所以我有三张桌子 订单:
CustomerID,OrderID
订单明细;
OrderID,ProductId,UnitPrice,Quantity,Discount
和产品:
ProductID,ProductName
我需要结合这两个表并创建这个表:
[Orderd Details].CustomersID,Products.ProductName,FORMULA
公式是人们在这个产品上花了多少钱。所以我想我必须从这个产品的每个订单中总结UnitPrice * Quantity *(1-Discount)。 可悲的是,我不知道该怎么做。我做的最好的是:
SELECT o.CustomerID,p.ProductName,SUM(od.Quantity*od.UnitPrice*(1-od.Discount)) as 'SKZ'
FROM Customers as c, Orders as o,[Order Details] as od,Products as p
WHERE (o.OrderID=od.OrderID AND p.ProductID=od.ProductID)
GROUP BY od.ProductID ORDER BY o.CustomerID;
但它没有用。
答案 0 :(得分:1)
首先,学习明确的JOIN
语法。简单的规则:从不在FROM
子句中使用逗号。
其次,您应该在GROUP BY
中包含所有非聚合列:
SELECT o.CustomerID, p.ProductName,
SUM(od.Quantity * od.UnitPrice * (1 - od.Discount)) as SKZ
FROM Orders as o JOIN
[Order Details] od
ON o.OrderID = od.OrderID JOIN
Products p
ON p.ProductID = od.ProductID
GROUP BY o.CustomerID, p.ProductName
ORDER BY o.CustomerID;