如何使用GROUP BY SQL子句而不使用聚合函数?

时间:2011-11-22 20:28:30

标签: sql sql-server

当我尝试使用以下SELECT语句时:

SELECT [lots of columns] 
FROM Client, Customer, Document, Group
WHERE [some conditions]
GROUP BY Group.id

SQL Server抱怨我选择的列不是GROUP BY语句的一部分,也不是聚合函数。我使用GROUP BY错了吗?我该怎么用呢?

4 个答案:

答案 0 :(得分:2)

要返回group by字段的所有单次出现以及相关的字段值,请编写如下查询:

select group_field,
       max(other_field1),
       max(other_field2),
...
from mytable1
join mytable2 on ... 
group by group_field
having count(*) = 1;

答案 1 :(得分:1)

是的,您正在错误地使用GROUP BY。使用GROUP BY的关键是使用聚合函数。如果您没有聚合函数,则可能需要SELECT DISTINCT。

SELECT DISTINCT
    col1,
    col2,
    -- etc
    coln
FROM Client
JOIN Customer ON ...
JOIN Document ON ...
JOIN [Group] ON ...
WHERE ...

答案 2 :(得分:0)

我的第一个猜测是问题是你有一个名为Group的表,我认为这是SQL中的保留字。尝试使用''

包装组名称

答案 3 :(得分:0)

您希望按所选的所有列进行分组,而不是聚合函数。

SELECT ProductName, ProductCategory, SUM(ProductAmount)
FROM Products
GROUP BY ProductName, ProductCategory

这将为您提供产品名称和类别的结果,以及该组所有聚合子记录中产品数量的总和。