单项订单-AdventureWorks

时间:2019-02-05 16:22:41

标签: sql sql-server

我想知道我的答案是否对这个问题有用?我可以在互联网上找到的答案似乎很相似,但是他们加入了另一个似乎模棱两可的表。

问题: “单个项目订单”是仅订购一个项目的客户订单。显示每个单项订单的SalesOrderID和UnitPrice。

他们的答案:

select sod.SalesOrderID, sod.UnitPrice
from SalesLT.SalesOrderDetail sod
inner join SalesLT.SalesOrderHeader soh on soh.SalesOrderID =
sod.SalesOrderID
where sod.SalesOrderID in (
                          select s.SalesOrderID as ordernums
                          from SalesLT.SalesOrderDetail s
                          group by s.SalesOrderID
                          having COUNT(*) = 1
                          );

我的答案:

SELECT SalesOrderID, UnitPrice
FROM SalesOrderDetail
GROUP BY SalesOrderID
HAVING COUNT(SalesOrderID) = 1;

1 个答案:

答案 0 :(得分:2)

如果您运行答案,则会收到错误消息,因为UnitPrice不在GROUP BY中。如果添加它,则您的HAVING将不起作用。

解决方案很简单。 。 。您需要一个聚合函数:

SELECT SalesOrderID, MAX(UnitPrice) as UnitPrice
FROM SalesOrderDetail
GROUP BY SalesOrderID
HAVING COUNT(SalesOrderID) = 1;