2009-06-23 20 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 

Diese Abfrage wird nicht ausgeführt, wirft,Row_Number() in SQLServer

Msg 207, Ebene 16, Status 1, Zeile 2 Ungültiger Spaltenname 'stl_key'.

ich konnte nicht verstehen, was das Problem ist. Bitte hilf mir!

+0

Vielen Dank – Partha

Antwort

8

Sie können nicht die ROW_NUMBER direkt verwenden - Sie können es in einem Common Table Expression so verpacken müssen:

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

Ich bin mir ziemlich sicher, dass Sie nicht "müssen" es in einem cte verpacken. Sie können es in einer regulären Select-Anweisung verwenden. – Joel

+0

Vielen Dank – Partha

+0

das ist richtig, Sie brauchen nicht ein CTE zu verwenden, können Sie eine Unterabfrage oder wiederholen Sie die Zeilennummer in der WHERE-Klausel – SQLMenace

1

eine andere Art und Weise, obwohl ich würde es vorziehen, 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

Sie können das Alias-Feld in der WHERE-Klausel nicht verwenden. Das sollte funktionieren:

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