簡體   English   中英

為什么說RowId是我的CTE查詢中的無效列?

[英]Why is it saying RowId is an invalid column in my CTE query?

我有一個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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM