如何选择SQL查询的第二行或第三行

如何选择SQL查询的第二行或第三行,sql,sql-server,sql-server-2008-r2,Sql,Sql Server,Sql Server 2008 R2,我有一个疑问: SELECT TOP 6 NoMachine, COUNT(NoMachine) AS Calls FROM DT GROUP BY NoMachine ORDER BY Calls DESC; 在这6条记录中,我想选择每一条,第一条,第二条,第三条,等等 最简单的方法是什么?我正在使用SQL Server 2008 R2。使用行号() 如果您只想要前6名中的前3名,为什么不直接使用前3名呢?另外,如果没有人提醒您,SQLServe

我有一个疑问:

SELECT TOP 6 
    NoMachine, COUNT(NoMachine) AS Calls 
FROM 
    DT 
GROUP BY 
    NoMachine 
ORDER BY 
    Calls DESC;
在这6条记录中,我想选择每一条,第一条,第二条,第三条,等等

最简单的方法是什么?我正在使用SQL Server 2008 R2。

使用
行号()


如果您只想要前6名中的前3名,为什么不直接使用前3名呢?另外,如果没有人提醒您,SQLServer2008(R2)现在已经不支持了;所以你真的想看看升级路径。我需要最常用的机器的信息,前6台。逐一地。我无法在我的工作服务器上升级SQL Server。我无法理解此代码,有很多语法错误。@RobertoLopez有一些拼写错误,更新了答案检查现在我编辑了您的代码,现在对我来说工作正常,非常感谢!如果发布的代码确实有效,这将是一个更好的答案。这个概念很好,但是发布的代码根本不起作用。只需将第一行更改为“with cte as”,这将是可行的。
select * from 
(SELECT  NoMachine,
 COUNT(*) AS Calls,
 row_number()over(order by  Calls DESC) rn
 FROM DT GROUP BY NoMachine 
) a where rn in (2,3)