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
最新的 WorkDate
即 12/24/2016
。我在这里遗漏了什么吗?
每个 ORDER BY
项都单独处理,他们正在考虑 ASC
除非另有说明。
您似乎希望这两项都是 DESC
,所以尝试:
ROW_NUMBER() OVER(PARTITION BY EmployeeID, DepartmentID
ORDER BY PayDate desc, WorkDate desc)
我有 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
最新的 WorkDate
即 12/24/2016
。我在这里遗漏了什么吗?
每个 ORDER BY
项都单独处理,他们正在考虑 ASC
除非另有说明。
您似乎希望这两项都是 DESC
,所以尝试:
ROW_NUMBER() OVER(PARTITION BY EmployeeID, DepartmentID
ORDER BY PayDate desc, WorkDate desc)