我有命令:
我有OrderLine:
我想看看哪种产品卖得最多。
我想把订单中的每一个数量和它属于状态为“已完成”的订单的数量相加。
查看数据,我们看到只有orderID = 3
有orderstatus = Completed
,因此我们只想要用于OrderID = 3
的OrderLine
--即OrderLineID = 6
和OrderLineID = 7
。
因此,我们的预期结果将是ProductID 1
和Quantity 11
,如下所示:
ProductID/OrderLineQuantity
到目前为止,我的代码会产生一个错误:
列'OrderLine.ProductID‘在select列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。
我的代码:
SELECT OrderLine.ProductID, SUM(OrderLineQuantity)FROM OrderLine Inner Join [Order] ON OrderLine.OrderID = [Order].OrderID WHERE OrderStatus = 'Completed'
发布于 2019-04-03 04:15:05
您需要一个GROUP BY
来修复语法问题,然后需要一些其他的东西来获得顶级产品:
SELECT TOP (1) ol.ProductID, SUM(ol.OrderLineQuantity)
FROM OrderLine ol Inner Join
[Order] o
ON ol.OrderID = o.OrderID
WHERE o.OrderStatus = 'Completed'
GROUP BY ol.ProductID
ORDER BY SUM(ol.OrderLineQuantity) DESC;
https://stackoverflow.com/questions/55494907
复制相似问题