loy*_*low 1 sql t-sql sql-server common-table-expression
我有一个基于一些在线示例编写的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'.
在我看到的每个例子中,它们RowId在查询中引用了CTE 的值,但由于某些原因它似乎不在范围内?
问题是你正在使用tablename的名称,它应该是的名称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
| 归档时间: | 
 | 
| 查看次数: | 1742 次 | 
| 最近记录: |