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
,不執行該查詢,拋出,ROW_NUMBER()在SQLServer的
消息207,級別16,狀態1,行2 無效的列名稱stl_key'。
我不明白是什麼問題。請幫幫我!
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
,不執行該查詢,拋出,ROW_NUMBER()在SQLServer的
消息207,級別16,狀態1,行2 無效的列名稱stl_key'。
我不明白是什麼問題。請幫幫我!
不能直接使用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
馬克
我敢肯定,你不必「包裝它在一個cte。您可以在常規選擇語句中使用它。 – Joel 2009-06-23 13:10:49
另一種方式,儘管我寧願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
您不能在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
非常感謝你 – Partha 2009-06-23 13:11:43