按投掷错误选择组中的所有列

时间:2011-10-13 15:35:01

标签: sql group-by syntax-error northwind

我对Northwind数据库Products Table运行了一个查询,如下所示

select * from Northwind.dbo.Products GROUP BY CategoryID我遇到了错误。我相信你也会遇到同样的错误。那么,我需要执行哪些正确的声明来根据类别ID对所有产品进行分组。

编辑这真的很有帮助了解

http://weblogs.sqlteam.com/jeffs/archive/2007/07/20/but-why-must-that-column-be-contained-in-an-aggregate.aspx

2 个答案:

答案 0 :(得分:4)

您需要使用聚合函数,然后按任何非聚合列进行分组。

我建议您阅读GROUP BY

答案 1 :(得分:3)

如果您在查询中使用GROUP BY,则SELECT语句中的所有项都必须作为聚合函数的一部分包含在内,例如Sum()Count(),否则它们也需要包含在GROUP BY条款中。

因为您使用的是SELECT *,所以这相当于列出SELECT中的所有列。

因此,要么在GROUP BY中列出所有内容,请尽可能使用聚合函数,或者只选择CategoryID