2016-05-23 63 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; 
相关问题