SQL Server 为什么在使用Where = 2时Row_number函数生成错误

wydwbb8l  于 2022-11-28  发布在  其他
关注(0)|答案(2)|浏览(101)

我正在使用Row_Number和order by函数对数据集进行排序。我想知道N = 2时的值。如果不使用'where N = 2',查询运行正常。但是,当我添加'where N =2'时,会出现错误。如何解决此问题?
消息207级别16状态1第15行无效列名'N'
下面的代码示例

create table temp 
(
    col1 nvarchar(25), 
    col2 nvarchar(25)
)

insert into  temp
values ('Babahoyo', 'Ecuador'),
       ('Stavanger', 'Norway'),
       ('Seattle', 'USA'),
       ('New York City', 'USA')

select 
    row_number() over (order by col2) as N, 
    col1, col2
from
    temp
where 
    N = 2

db Fiddle

ngynwnxp

ngynwnxp1#

不能将an alias reference放入where clause

select * from
(
select row_number() OVER (ORDER BY col2) as N, col1, col2
from temp
)A
where n = 2
vsmadaxz

vsmadaxz2#

使用offset/fetch

select t.*
from temp
order by col2
offset 1 row fetch 1 row only

相关问题