Row_Number () dans SQLServer

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 n'est pas exécutée, lance,

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!

Vous ne pouvez pas utiliser le ROW_NUMBER directement – vous devez l'empackageer 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

d'une autre manière, 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 

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