【发布时间】:2022-01-03 03:01:41
【问题描述】:
以下查询错误,列名“rowid”无效
SELECT row_number() over (partition by sales_rep order by timestamp desc) as rowid, *
FROM dbo.you_gettheidea
where rowid = 1
但是,以下版本可以完美运行。我不知道为什么。
with t1 as (SELECT row_number() over (partition by sales_rep order by timestamp desc) as rowid, *
FROM dbo.you_gettheidea)
Select * from t1
Where rowid = 1
SQL Server 12.0.2000
编辑:看来这个问题符合following answered question
【问题讨论】:
-
查看 SQL 执行顺序。 where 子句对派生列 rowid 不可见
-
如果我正确地关注this,SELECT 是第 6,而 WHERE 是第 4。因此,您对可见性的评论是有道理的。谢谢
-
如果你正确地点击了那个链接,
WHERE是第 2 名,SELECT是第 6 名,所以WHERE看不到后续操作的任何结果
标签: sql sql-server partition-by