SQL Server 2012.
我不知道如何让我的子查询工作。它返回不超过1的值,这是不允许的。我想要每个customerID的数量总和。 customerID
存在于tblOrder
,QuantityOrdered
位于LineItem
表格中。
SELECT
CustomerID, ProductID,
SUM(QuantityOrdered) AS QuantitySum,
(SELECT (SUM(QuantityOrdered))
FROM LineItem
INNER JOIN tblOrder ON tblOrder.OrderID = LineItem.OrderID
GROUP BY CustomerID) as PRACTICE
FROM
tblOrder
INNER JOIN
LineItem LI ON tblOrder.OrderID = LI.OrderID
WHERE
OrderDate BETWEEN '2016-01-31' AND '2016-03-01'
GROUP BY
ProductID, CustomerID
ORDER BY
CustomerID
答案 0 :(得分:1)
使用GROUP BY CustomerID
子句替换子查询中的WHERE
:
SELECT CustomerID,
ProductID,
sum(QuantityOrdered) as QuantitySum,
(
SELECT (sum(QuantityOrdered))
FROM LineItem AS LI_sub
INNER JOIN tblOrder AS O_sub ON O_sub.OrderID = LI_sub.OrderID
WHERE O_sub.CustomerId = tblOrder.CustomerId
) as PRACTICE
FROM tblOrder
INNER JOIN LineItem LI ON tblOrder.OrderID = LI.OrderID
WHERE OrderDate BETWEEN '2016-01-31' AND '2016-03-01'
GROUP BY ProductID, CustomerID
ORDER BY CustomerID
答案 1 :(得分:0)
我想要每个customerID的数量总和
对于所有订单还是只有所选订单?
也许这就是你想要实现的目标?
SELECT CustomerID,
ProductID,
SUM(QuantityOrdered) as QuantitySum,
SUM(SUM(QuantityOrdered)) OVER (PARTITION BY CustomerID) as QuantitySumByCustomerID
FROM tblOrder
INNER JOIN LineItem LI ON tblOrder.OrderID = LI.OrderID
WHERE OrderDate BETWEEN '2016-01-31' AND '2016-03-01'
GROUP BY ProductID, CustomerID
ORDER BY CustomerID