2016-05-23 66 views
-3

我正在使用SQL Server 2014中的存儲過程來獲取項目的位置。SQL Server在不同順序的表中元素的位置

我已閱讀關於ROW_NUMBER,但我不知道如何使用它(或者如果我可以使用它)。

我有一個包含ID和日期的元素的表,我想知道在按日期排序的表中ID的位置。

比方說,比如我有這5個項目(編號日期):

ID  DATE 
1  2016-01-04 
2  2016-01-05 
3  2016-01-01 
4  2016-01-02 
5  2016-01-03 

使用我的存儲過程來獲取3的位置,我希望它返回5(3實際位置當表格按日期排序時)。

謝謝!

回答

2

是的,你可以使用ROW_NUMBER如果你只想要一個結果,如果有重複,或RANK如果你想每一個與你的條件符合(例如,如果有超過1個一行2016-01-03值)行:

;WITH CTE AS 
(
    SELECT *, RN = ROW_NUMBER() OVER(ORDER BY [Date] DESC) 
    FROM dbo.YourTable 
) 
SELECT ID, [Date] 
FROM CTE 
WHERE RN = 3; 
相關問題