如何从sql查询中找到第n行?

A.T*_*.T. 3 sql sql-server-2008-r2

我有一个表格,数据是这样的:

Name    Salary
Tom      10000
John     20000
Ram      20000
Danny    15000
Sandy    14000
Riddle   15000
Run Code Online (Sandbox Code Playgroud)

我可以找到第二高薪cte;

with cte
as
(
    select ROW_NUMBER() over (order by Salary desc) as r,
    * from Employee e
)
select * from cte where r=2
Run Code Online (Sandbox Code Playgroud)

但这给结果'Ram'带来了20000的薪水.我想要归还的是具有第n级薪水的人的每一条记录.例如,如果我正在寻找n=2,结果将是:

Danny    15000
Riddle   15000
Run Code Online (Sandbox Code Playgroud)

如何修改查询以实现此目的?

lc.*_*lc. 9

用途DENSE_RANK():

;WITH cte AS
(
    SELECT DENSE_RANK() OVER (ORDER BY Salary DESC) AS r, *
    FROM Employee e
)
SELECT *
FROM cte
WHERE r = 2
Run Code Online (Sandbox Code Playgroud)

SQL小提琴