Я пытаюсь ранжировать записи, используя следующий запрос:
SELECT
ROW_NUMBER() over (partition by
TW.EMPL_ID,TW.HR_DEPT_ID,TW.Transfer_Startdate
order by TW.EMPL_ID,TW.Effective_Bdate) RN,
TW.EMPL_ID,TW.HR_DEPT_ID,TW.Transfer_Startdate,Effective_BDate from
TT_EMPLOYEE_WORKDAY TW
where TW.HR_DOMAIN_CODE = 'SGP'
Однако результирующий вычисляемый столбец Row_Number отображает раздел только для первого столбца. В идеале я ожидал, что для Row_Number будет одинаковое значение, где разделение по данным столбца идентично.
Любая подсказка, где я могу ошибаться?
USING RANK или DENSE RANK не вариант, так как я хочу идентифицировать все такие строки для нескольких сотрудников, где EMPL_ID, HR_DEPT_ID и Transfer_StartDate одинаковы (RN = 1)
Sample data:
RN AON_EMPL_ID HR_DEPT_ID Transfer_Startdate Effective_BDate
1 0100690 69895 01/01/2017 2017-01-01
2 0100690 69895 01/01/2017 2017-01-03
3 0100690 69895 01/01/2017 2017-01-04
Order by
результат, он испортитPartition
часть, попробуйтеOrder by TW.EMPL_ID,TW.HR_DEPT_ID,TW.Transfer_Startdate,TW.RN
или удалитеOrder by
- person LONG   schedule 19.04.2017TW.EMPL_ID
, вы могли ошибиться сTW.AON_EMPL_ID
? - person LONG   schedule 19.04.2017RANK
илиDENSE_RANK
, а неROW_NUMBER
, замените более поздний на любой из предыдущих, и зависит от того, как вы хотите показать данные 2-го места - person LONG   schedule 19.04.2017order by
Effective Date
из результата, который не должен вносить никакого вклада в функцию - person LONG   schedule 19.04.2017