“单个项目订单”是仅订购一个项目的客户订单。显示每个单项订单的SalesOrderID和单价
嗨, 我尝试了这个问题,下面是我的答案:
SELECT s.salesOrderID, s.UnitPrice
FROM SalesOrderDetail s
INNER JOIN Product p ON s.ProductID = p.ProductID
GROUP BY s.salesOrderID, s.unitPrice
HAVING count(s.OrderQty) = 1
。请让我知道这是否是最新的,否则请提供解决方案。寻找答案
谢谢
答案 0 :(得分:0)
我建议:
SELECT MAX(s.salesOrderID) as salesOrderId, MAX(s.UnitPrice) as UnitPrice
FROM SalesOrderDetail s
GROUP BY s.OrderID
HAVING COUNT(*) = 1;
根据您的查询,UnitPrice
位于SalesOrderDetail
中而不是Product
中,因此JOIN
不是必需的。如果UnitPrice
确实位于Product
中,那么您需要JOIN
。
请注意查询的逻辑。您要按订单计数订单详细信息记录。因此,那应该是聚合。 HAVING
子句可确保该订单只有一条明细记录。
因此,MAX()
函数将返回该单行上的值。
答案 1 :(得分:0)
我认为这个问题的意思是客户订单正好一种订单数量为 1 的商品。JOIN 是不必要的,因为所有需要的数据都在一个表中。这是我的解决方案:
SELECT SalesOrderID, UnitPrice
FROM SalesOrderDetail
WHERE SalesOrderID IN
(SELECT SalesOrderID
FROM SalesOrderDetail
GROUP BY SalesOrderID HAVING COUNT(ProductID) = 1) AND OrderQty = 1
这消除了单件数量多于一件的订单。
SQLZoo 没有这些答案的笑脸,所以我不确定我是否正确;)