Sql server 无法绑定多部分标识符“多级”CTE中出现错误
我试图根据表中的行号获取一组特定的行。为此,我尝试将以下sql查询与公共表表达式cte一起使用。我已在查询中标记出问题所在的部分 我遇到的问题是不同的,因为CTE中的第二个查询有一个基于参数的where子句,所以我无法按如下所示加入表: 我确信我缺少了CTE语法的一些基础知识,因为设置本身对我来说是有意义的,如果我摆脱了CTE,我可以让它工作。有人能告诉我我错过了什么吗Sql server 无法绑定多部分标识符“多级”CTE中出现错误,sql-server,sql-server-2008,common-table-expression,Sql Server,Sql Server 2008,Common Table Expression,我试图根据表中的行号获取一组特定的行。为此,我尝试将以下sql查询与公共表表达式cte一起使用。我已在查询中标记出问题所在的部分 我遇到的问题是不同的,因为CTE中的第二个查询有一个基于参数的where子句,所以我无法按如下所示加入表: 我确信我缺少了CTE语法的一些基础知识,因为设置本身对我来说是有意义的,如果我摆脱了CTE,我可以让它工作。有人能告诉我我错过了什么吗 ;with cte as ( SELECT ROW_NUMBER() OVER (ORDER BY Creat
;with cte as (
SELECT ROW_NUMBER() OVER (ORDER BY Created) RNUM, *
FROM Notes
WHERE BookId = @BookId AND Username = @Username
),
offsetrow as (
SELECT RNUM
FROM cte
WHERE cte.NoteId = @StartOffset
)
SELECT *
FROM cte
WHERE cte.RNUM > offsetrow.RNUM --The multi-part identifier 'offset.RNUM' could not be bound.
基本上,这里的问题是您仅从一个resultset cte中进行选择。您的表达式代码当前生成两个:cte和offsetrow
你应该像对待两个经典的表/视图那样将它们连接在一起。你错过了在上一个select语句中加入offsetrow from子句,我的朋友。请这样做:
SELECT *
FROM cte,offsetrow
WHERE cte.RNUM > offsetrow.RNUM
我也遇到过同样的问题,发现如果我想从CTE1中选择某些列,然后加入CTE2,Hiren的解决方案就行不通了。相反,我不得不做下面的事情 选择。。。。 来自CTE1 左连接CTE2 在CTE1.Column=CTE2.Column上
这对我很有用谢谢你的回复。cte和offsetrow在最终select语句中有两个不同的用途。我可以不分开使用这两张桌子吗?我现在明白你的意思了。啊!再次感谢!谢谢啊。真不敢相信这一切都发生了,太好了。它发生在它里面。