SQL使用带有“in”子句的sum命令

时间:2014-01-10 20:15:34

标签: sql

我的sql表如下图所示。

enter image description here

我的查询是:

       Select * from tblOrderDetails where OrderID in 
          (Select OrderID from tblOrders where CustomerID = 523456)

返回来自tblOrderDetails的值,如

enter image description here

查询将所选客户的所有销售详细信息显示为已过期。但我想在具有相同ProductID的行上使用SUM。预期输出应如下所示:

enter image description here

对具有相同productID,数量和价格的行进行求和,并合并行。但必须在选定的CustomerID内完成。

我用很多不同的方式尝试过SUM命令,但是无法让它工作。请建议。感谢。

2 个答案:

答案 0 :(得分:4)

听起来你不了解GROUP BY子句。

也许这就是你想要做的事情?

Select CustomerID,ProductId,SUM(Quantity) Quantity,SUM(TotalPrice) TotalPrice from tblOrderDetails where OrderID in (Select OrderID from tblOrders where CustomerID = 523456)
GROUP BY CustomerID,ProductId

这会将同一客户的所有内容分组,然后按相同的产品分组,只允许在这些合并的子集上使用SUM

答案 1 :(得分:1)

您将希望使用SUM和GROUP BY来获得您正在寻找的结果。

SELECT ProductID, SUM(Quantity) AS Quantity, SUM(TotalPrice) AS TotalPrice
FROM tblOrderDetails
WHERE OrderID IN
(
    SELECT OrderID
    FROM tblOrders
    WHERE CustomerID = 523456
)
GROUP BY ProductID