2017-07-07 175 views
0
select ROW_NUMBER() over(PARTITION by number order by number) as rn 
from (select t1.id as number, 
      t1.name as name from #a as T1 
     join #a T2 on T1.id=T2.id) 

爲什麼這個查詢不工作爲什麼這個查詢不工作

它顯示錯誤.....

消息102,級別15,狀態1,行6 附近有語法錯誤)」。

+10

末尾缺少別名。 '..T1.id = T2.id)a' –

+2

「按數字順序進行分區」沒有意義。按列或按列排序,而不是兩者。 – Peter

回答

3

MSSQL要求派生表(from子句中的子查詢)爲named。只需將您的查詢改爲:

select ROW_NUMBER() over(PARTITION by number order by number)as rn 
from 
( 
select t1.id as number,t1.name as name from #a as T1 join #a T2 on T1.id=T2.id 
) subquery1 

應該解決您的問題。

+0

正確的術語是「派生表」(這是子查詢的一種特殊形式)。更多信息[這裏](https://www.programmerinterview.com/index.php/database-sql/derived-table-vs-subquery/)。 –

+0

@TT。我認爲「派生表」是表子查詢的結果?似乎很好,在名稱「subquery1」中給出這個東西。 – LukStorms

+0

@LukStorms我不是指別名,而是他在第一句中使用的術語「subselect」。 –