2009-06-23 5 views
3
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 

Cette requête est pas exécutée, plaids,ROW_NUMBER() dans SQLServer

Msg 207, niveau 16, état 1, ligne 2 nom de colonne non valide 'stl_key'.

Je ne pouvais pas comprendre quel est le problème. Aidez-moi, s'il vous plaît!

+0

Merci beaucoup – Partha

Répondre

8

Vous ne pouvez pas utiliser le ROW_NUMBER directement - vous devez emballer dans une expression de table commune comme ceci:

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 

Marc

+1

Je suis sûr que vous ne « devez » emballer dans un cte. Vous pouvez l'utiliser dans une instruction select régulière. – Joel

+0

Merci beaucoup – Partha

+0

que vous n'avez pas besoin d'utiliser un CTE, vous pouvez faire une sous-requête ou répéter le row_number dans la clause WHERE – SQLMenace

1

une autre façon, bien que je préférerais 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 
1

vous ne pouvez pas utiliser le champ d'alias dans la clause where. Cela devrait fonctionner:

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 
Questions connexes