我有一个基于一些在线示例编写的CTE查询,不确定为什么我得到关于RowId的错误:
DECLARE @StartRow INT
DECLARE @EndRow INT
SET @StartRow = 120
SET @EndRow = 140
;WITH MyCTE AS
(
SELECT
c1, c2, c3,
ROW_NUMBER() OVER(ORDER BY gav.c1) AS RowId
FROM
MyTable1 gav
)
SELECT *
FROM MyTable1
WHERE RowId > @StartRow
AND RowId < @EndRow
ORDER BY c1
我得到这个错误:
留言207,16层,1州,15行
列名"RowId"无效。
207号电话,16层,州1,16线
列名'RowId'无效。
在我看到的每个例子中,他们在查询中引用CTE的RowId
值,但由于某种原因,它似乎不在范围内?
问题是你正在使用表名的名称时,它应该是CTE
的名称
DECLARE @StartRow INT
DECLARE @EndRow INT
SET @StartRow = 120
SET @EndRow = 140
;WITH MyCTE AS
(
SELECT c1, c2, c3,
ROW_NUMBER() OVER(ORDER BY gav.c1) AS RowId
FROM MyTable1 gav
)
SELECT *
FROM MyCTE --------------- <<=== HERE
WHERE RowId > @StartRow
AND RowId < @EndRow
ORDER BY c1