SQLServer中的Row_Number()

时间:2009-06-23 13:02:40

标签: sql-server

select 
   sp_una_stl_key, 
   row_number() over(order by sp_una_stl_key)as stl_key 
from        
    t_unit_data_archive
where 
    stl_key>=10

此查询未执行,抛出,

  

Msg 207,Level 16,State 1,Line 2   列名称'stl_key'无效。

我无法理解这是什么问题。请帮帮我!

3 个答案:

答案 0 :(得分:8)

您无法直接使用ROW_NUMBER - 您需要将其打包到Common Table Expression中,如下所示:

with CTE as
(
  select 
     sp_una_stl_key, row_number() over(order by sp_una_stl_key) as stl_key 
  from 
     t_unit_data_archive
)
select *
from CTE
where stl_key >= 10

马克

答案 1 :(得分:1)

另一种方式虽然我更喜欢CTE

select * from (select 
   sp_una_stl_key, 
   row_number() 
   over(order by sp_una_stl_key)as stl_key 
from        
    t_unit_data_archive) x
where 
    stl_key>=10

答案 2 :(得分:1)

您不能在where子句中使用别名字段。这应该有效:

select * from 
(select sp_una_stl_key, row_number() over(order by sp_una_stl_key)as stl_key 
from t_unit_data_archive) a
where stl_key>=10