我想从表和组中select *
只有一列。我是SQL的新手,所以基本的问题。我的查询看起来像这样。
Select top 10
[DocumentClass], [DocumentUID]
,[DocumentClassification]
,[DocumentNumber]
,[Revision]
,[Description]
,[Owner]
from
Table
Group BY
[DocumentClass]
我收到错误:
列'DocumentUID'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。
请指教。感谢
答案 0 :(得分:2)
如果您想为每个文档类获取一行,请使用row_number()
代替group by
:
Select top 10 t.*
from (select t.*, row_number() over (partition by documentclass order by newid()) as seqnum
from table t
) t
where seqnum = 1;
row_number()
是枚举行的函数。在这种情况下,每个文档类将重新开始。 newid()
只是一种选择随机行的方法。
通常,当您使用group by
时,您还会有min()
或sum()
等聚合函数。
答案 1 :(得分:0)
此错误表示SQL Server不知道您要使用哪个列。 当您使用GROUP BY命令时,您想要选择一个特定值(MIN,SUM或AVG)或者您想要所有(计算行数)。 您可以从本网站获取所有必要信息。 GROUP BY