2013-02-26 39 views
0

我有腳本化基於一些網上的例子一個CTE查詢,不知道爲什麼我收到有關rowid的一個錯誤:爲什麼說我的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 

我得到這個錯誤:

Msg 207, Level 16, State 1, Line 15
Invalid column name 'RowId'.
Msg 207, Level 16, State 1, Line 16
Invalid column name 'RowId'.

在每例如我見過,他們在查詢中引用了CTE中的RowId值,但由於某種原因,它似乎不在範圍內?

回答

8

問題是你正在使用的表名的名字時,它應該是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 
名稱
相關問題