试图将部分行相加

时间:2016-10-05 15:19:13

标签: sql sum

所以我有三张桌子 订单:

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; 

但它没有用。

1 个答案:

答案 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;