SQL Server:按事件列出的前10个查询,不使用分组依据
我正在尝试编写一个查询,查询数据库中某个列的前10个匹配项。但我不想看到它在一组模式 我有一个包含40000行和20列的数据库,我想编写一个查询,返回一个特定列中前10个出现的x行 当我使用此选项时:SQL Server:按事件列出的前10个查询,不使用分组依据,sql,sql-server,Sql,Sql Server,我正在尝试编写一个查询,查询数据库中某个列的前10个匹配项。但我不想看到它在一组模式 我有一个包含40000行和20列的数据库,我想编写一个查询,返回一个特定列中前10个出现的x行 当我使用此选项时: Select top 10 colum.name from table.name select top 10 colum.name From table.name group by colum.name order by colum.name DESC 我得到的是数据库中前10行 当我使用此选
Select top 10 colum.name
from table.name
select top 10 colum.name
From table.name
group by colum.name
order by colum.name DESC
我得到的是数据库中前10行
当我使用此选项时:
Select top 10 colum.name
from table.name
select top 10 colum.name
From table.name
group by colum.name
order by colum.name DESC
我得到了前10个匹配项,但按我的列分组,我想看到的是相同的前10个匹配项,但显示了所有行
我不知道这是不是一个愚蠢的问题,但我对这个问题失去了所有的冷静
因此,感谢您提前抽出时间
you could use row_number()/rank()/dense_rank () depending on the requirement
例:
这将输出10行您可以使用以下内容:
;WITH Top10Distinct AS
(
SELECT DISTINCT TOP 10 YourColumn
FROM dbo.YourTable
ORDER BY YourColumn DESC
)
SELECT *
FROM dbo.YourTable tbl
INNER JOIN Top10Distinct cte ON tbl.YourColumn = cte.YourColumn
CTE首先获取列的前10个不同值,然后将前10个值与实际的基表dbo.YourTable合并,从而从基表中完整检索具有前10个不同列值之一的所有行。您可以使用脏子查询:
Select column.name
from table.name
Where column.name IN (Select top 10 column.name
from table.name
group by column.name
order by count(*) desc)
你的问题不清楚。可以添加所需的输出吗?对于一列值,可以有多行。在这种情况下,您希望显示哪些行?吹毛求疵:这是一个带有m-n的列,而不是一个列。。。你的帖子中总是拼写错误谢谢你,马克,它就像魔术一样。对不起,我的英语,我是葡萄牙人,我不经常使用英语,因为我喜欢。感谢本达克利尔。你的想法也行。