SQL关系查询

时间:2015-07-10 12:03:27

标签: sql sql-server

SELECT dbo.Customers.Name, dbo.Items.Name AS ItemName,SUM(dbo.OrderDeliveryDetail.DeliveredQuantity) AS DeliveredQuantity
FROM   dbo.OrderDeliveryDetail 
INNER JOIN dbo.Customers ON dbo.OrderDeliveryDetail.BusinessUnitId = dbo.Customers.BusinessUnitId 
INNER JOIN dbo.Items ON dbo.OrderDeliveryDetail.BusinessUnitId = dbo.Items.BusinessUnitId AND dbo.OrderDeliveryDetail.ItemId = dbo.Items.ItemId
GROUP BY dbo.Customers.Name, dbo.Items.Name, dbo.OrderDeliveryDetail.DeliveredQuantity

我正在编写此查询以获取我的查询正在执行的DeliveredQuantity的总和,但他不是DeliveredQuantity的返回总和

2 个答案:

答案 0 :(得分:1)

DeliveredQuantity中删除GROUP BY,因为它是一个汇总列:

SELECT c.Name, 
       i.Name                   AS ItemName, 
       SUM(d.DeliveredQuantity) AS DeliveredQuantity 
FROM   dbo.OrderDeliveryDetail d
       INNER JOIN dbo.Customers c
               ON d.BusinessUnitId = c.BusinessUnitId 
       INNER JOIN dbo.Items i
               ON d.BusinessUnitId = i.BusinessUnitId 
                  AND d.ItemId = i.ItemId 
GROUP  BY c.Name, 
          i.Name 

答案 1 :(得分:0)

dbo.OrderDeliveryDetail.DeliveredQuantity不应该在group by子句中,因为你要对这个变量求和。

所以试试:

SELECT   dbo.Customers.Name, dbo.Items.Name AS ItemName,      SUM(dbo.OrderDeliveryDetail.DeliveredQuantity) AS DeliveredQuantity
 FROM          dbo.OrderDeliveryDetail INNER JOIN
dbo.Customers ON dbo.OrderDeliveryDetail.BusinessUnitId =dbo.Customers.BusinessUnitId INNER JOIN
dbo.Items ON dbo.OrderDeliveryDetail.BusinessUnitId = dbo.Items.BusinessUnitId AND dbo.OrderDeliveryDetail.ItemId = dbo.Items.ItemId
GROUP BY dbo.Customers.Name, dbo.Items.Name
相关问题