以下查詢錯誤與無效的列名 '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
編輯:看來這個問題符合以下回答的問題
uj5u.com熱心網友回復:
您不能在同一陳述句的 where 子句中使用列別名。它不遵守執行順序,這就是需要 CTE 的原因。請檢查執行順序
- FROM 和 JOIN 。FROM 子句和隨后的 JOIN 將首先執行以確定正在查詢的總作業資料集。
- 在哪里。
- 通過...分組。
- 有。
- 選擇。
- 清楚的。
- 訂購者。
- 限制/偏移/頂部
uj5u.com熱心網友回復:
遲到的答案,但還有另一種沒有 CTE 或子查詢的選項...... WITH TIES
Select top 1 with ties *
From dbo.you_gettheidea
Order By row_number() over (partition by sales_rep order by timestamp desc)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/365083.html
標籤:sql sql-server 分区依据
下一篇:SQL獲取上個月的更改
