SQL Server具有不同顺序的表中元素的位置

时间:2016-05-23 17:21:05

标签: sql-server tsql sql-server-2014

我在SQL Server 2014中使用存储过程来获取项目的位置。

我读过有关ROW_NUMBER但我不知道如何使用它(或者我可以使用它)。

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

比方说我有这5个项目(ID。日期):

{{1}}

使用我的存储过程获取3的位置,我希望它返回5(当表按日期desc排序时,实际位置为3.)

谢谢!

1 个答案:

答案 0 :(得分: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;