我試圖在第五個到第十個之間得到記錄。 我使用下面的查詢在SQL Server如何在SQL Server中使用rank函數
PLZ讓我正確
SELECT ID,
code,
first name,
last name,
RANK() OVER(ORDER BY code) AS rk
FROM tbl_em_employees
WHERE rk BETWEEN 5 AND 10;
它給我的錯誤
無效RK。
我試圖在第五個到第十個之間得到記錄。 我使用下面的查詢在SQL Server如何在SQL Server中使用rank函數
PLZ讓我正確
SELECT ID,
code,
first name,
last name,
RANK() OVER(ORDER BY code) AS rk
FROM tbl_em_employees
WHERE rk BETWEEN 5 AND 10;
它給我的錯誤
無效RK。
不能引用列別名在WHERE
,所以你必須使用一個子查詢或公用表表達式(CTE):
WITH CTE AS
(
Select ID, code, first name, last name,
rank() over (order by code) as rk
from tbl_em_employees
)
SELECT ID, code, first name, last name
FROM CTE
WHERE rk between 5 and 10
這是否真的適用於列名稱中的空格嗎? 「名字」和「姓氏」是否需要方括號?醫學博士 – MatSnow
可以使用RANK函數一樣, : -
RANK () OVER ([ partition_by_clause ] order_by_clause)
更多參考檢查此鏈接: - https://docs.microsoft.com/en-us/sql/t-sql/functions/rank-transact-sql
。 Khairul Basar你爲什麼不喜歡我的帖子?我的帖子中的任何問題 – kannu
首先,可能@MD。 Khairul Basar並不是給你一個-1的人,他更新了你的回答,從你的代碼中刪除不需要的空格。然後,你的問題被降低了,因爲幾乎只有一個鏈接的問題被認爲是低質量的,你只是放置鏈接並從文檔中複製參數,你沒有解釋任何東西。最後,那個*沒有解決問題,他對RANK()沒有問題,但是列別名看到最多的答案。 –
我沒有downvote! –
SELECT ID, code, first name, last name FROM
(
Select ID, code, first name, last name,
rank() over (order by code) as rk
from tbl_em_employees
)
WHERE rk between 5 and 10
請注意,「OFFSET/FETCH」不考慮排名值;即如果您有多個排名在1-4中的任何位置,這些將包括在內。此外,如果您有5到10之間的倍數,則不會檢索所有這些數字。 更好地把你的查詢在一個子選擇,並從該選擇'WHERE Rnk之間5和10'作爲蒂姆在下面說 – SQLBadPanda