Row_Number () в SQLServer - PullRequest
       1

Row_Number () в SQLServer

3 голосов
/ 23 июня 2009
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

Этот запрос не выполняется, выбрасывает,

Сообщение 207, Уровень 16, Состояние 1, Строка 2 Неверное имя столбца 'stl_key'.

Я не мог понять, в чем проблема. пожалуйста, помогите мне!

Ответы [ 3 ]

8 голосов
/ 23 июня 2009

Вы не можете использовать ROW_NUMBER напрямую - вам нужно упаковать его в общее выражение таблицы следующим образом:

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 голос
/ 23 июня 2009

вы не можете использовать псевдоним поля в предложении 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
1 голос
/ 23 июня 2009

другой способ, хотя я бы предпочел 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...