Row_number 中的排序方式无法正常工作

Order By in Row_number not working properly

我有 ROW_NUMBER 函数用来获取最新记录,但函数中的 Order by 似乎不起作用。不确定我做错了什么。

SELECT *,
ROW_NUMBER() OVER(PARTITION BY EmployeeID, DepartmentID ORDER BY PayDate, WorkDate desc) AS CurrentFlag
FROM test

结果示例 table:

EmployeeID | DepartmentID | Balance | PayDate  |  WorkDate   | CurrentFlag
123          1              200       1/3/2017    12/22/2016   1
123          1              300       1/3/2017    12/23/2016   2
123          1              500       1/5/2017    12/24/2016   3

我应该得到什么:

EmployeeID | DepartmentID | Balance | PayDate  |  WorkDate   | CurrentFlag
123          1              200       1/3/2017    12/22/2016   3
123          1              300       1/3/2017    12/23/2016   2
123          1              500       1/5/2017    12/24/2016   1

我不确定我的 ROW_NUMBER 函数做错了什么。我按 PayDate 然后 WorkDate 降序排序,所以我应该得到 CurrentFlag = 1 最新的 WorkDate12/24/2016。我在这里遗漏了什么吗?

每个 ORDER BY 项都单独处理,他们正在考虑 ASC 除非另有说明。

您似乎希望这两项都是 DESC,所以尝试:

ROW_NUMBER() OVER(PARTITION BY EmployeeID, DepartmentID 
                  ORDER BY PayDate desc, WorkDate desc)