2017-05-25 176 views
1

我有ROW_NUMBER函數,我正在使用獲取最新的記錄,但該函數中的Order by似乎沒有工作。不知道我做錯了什麼。結果表排序By Row_number not working properly

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

例子:

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。我在這裏錯過了什麼嗎?

回答

1

每個ORDER BY項目是分開處理的,除非另有說明,否則他們正在考慮ASC

看樣子你想這兩個項目是DESC,所以嘗試:

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

OMG太感謝你了,我不知道你有指定的順序爲每列 – Stephanie

+0

@Stephanie嘿沒有問題,快樂編碼:) –