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 附近有语法错误)”。
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 附近有语法错误)”。
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
应该解决您的问题。
正确的术语是“派生表”(这是子查询的一种特殊形式)。更多信息[这里](https://www.programmerinterview.com/index.php/database-sql/derived-table-vs-subquery/)。 –
@TT。我认为“派生表”是表子查询的结果?似乎很好,在名称“subquery1”中给出这个东西。 – LukStorms
@LukStorms我不是指别名,而是他在第一句中使用的术语“subselect”。 –
末尾缺少别名。 '..T1.id = T2.id)a' –
“按数字顺序进行分区”没有意义。按列或按列排序,而不是两者。 – Peter