繁体   English   中英

在SQL中用一个“按列分组”选择*

[英]Select * with one Group By Column in SQL

我想从表中select *并仅按一列分组。 我是SQL的新手,所以有一个基本问题。 我的查询看起来像这样。

Select top 10
    [DocumentClass], [DocumentUID]
    ,[DocumentClassification]
    ,[DocumentNumber]
    ,[Revision]
    ,[Description]
    ,[Owner]
from 
    Table
Group BY 
    [DocumentClass]

我得到的错误:

选择列表中的“ DocumentUID”列无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。

请指教。 谢谢

如果要每个文档类获取一行,请使用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()row_number()的函数。 在这种情况下,每个文档类都会重新开始。 newid()只是选择随机行的一种方法。

通常,当您使用group by ,您还将具有聚合功能,例如min()sum()

此错误表示SQL Server不知道您要使用哪一列。 当您使用GROUP BY命令时,您想要选择一个特定值(MIN,SUM或AVG),或者您想要全部(计数该行)。 您可以从该站点获得所有必要的信息。 通过...分组

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM