我在SQL Server 2014中使用存储过程来获取项目的位置。
我读过有关ROW_NUMBER但我不知道如何使用它(或者我可以使用它)。
我有一个包含ID和日期元素的表格,我想知道一个元素的位置,因为它的ID在表格中按日期排序。
比方说我有这5个项目(ID。日期):
{{1}}
使用我的存储过程获取3的位置,我希望它返回5(当表按日期desc排序时,实际位置为3.)
谢谢!
答案 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;