我想知道我的答案是否对这个问题有用?我可以在互联网上找到的答案似乎很相似,但是他们加入了另一个似乎模棱两可的表。
问题: “单个项目订单”是仅订购一个项目的客户订单。显示每个单项订单的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;
答案 0 :(得分:2)
如果您运行答案,则会收到错误消息,因为UnitPrice
不在GROUP BY
中。如果添加它,则您的HAVING
将不起作用。
解决方案很简单。 。 。您需要一个聚合函数:
SELECT SalesOrderID, MAX(UnitPrice) as UnitPrice
FROM SalesOrderDetail
GROUP BY SalesOrderID
HAVING COUNT(SalesOrderID) = 1;