Я пытаюсь получить данные для записей, используя самую последнюю ROLE_START_DATE.Я пробовал несколько методов и не могу заставить его работать.Это всегда заканчивается извлечением всех данных, а не конкретных записей.
Базовый сценарий:
SELECT DISTINCT EMPLOYEE "E.EMPLOYEE #",
LR.DESCRIPTION "Role",
R.ROLE_STATUS "Status",
R.ROLE_START_DATE "Role Start"
FROM EMPLOYEES E
JOIN ROLES R ON E.EMPLOYEE_ID = R.EMPLOYEE_ID
JOIN LU_ROLES LR ON R.ROLE_ID = LR.ROLE_ID
WHERE ROLE_START_DATE <= DATE '2017-12-03'
ORDER BY 1
Результаты:
Employee # | Role | Status | Role Start
23432 Associate Not Active 04/23/2011
23432 Manager Active 11/2/2012
54334 Analyst Resigned 10/15/2015
12311 Help Desk Not Active 05/12/2014
12311 Analyst Not Active 06/11/2015
12311 Supervisor Active 07/12/2016
Изменен для извлечения только записи с самой последней датой, но он не работает должным образом,и дает мне точно такой же доход, как указано выше.
SELECT DISTINCT EMPLOYEE "E.EMPLOYEE #",
LR.DESCRIPTION,
R.ROLE_STATUS,
MAX(ROLE_START_DATE)
FROM EMPLOYEES E
JOIN ROLES R ON E.EMPLOYEE_ID = R.EMPLOYEE_ID
JOIN LU_ROLES LR ON R.ROLE_ID = LR.ROLE_ID
WHERE ROLE_START_DATE >= DATE '2017-12-03'
GROUP BY E.EMPLOYEE, LR.DESCRIPTION, R.ROLE_STATUS
ORDER BY 1
Что бы я хотел получить:
Employee # | Role | Status | Role Start
23432 Manager Active 11/2/2012
54334 Analyst Resigned 10/15/2015
12311 Supervisor Active 07/12/2016
Буду очень признателен за любую помощь или совет.
Заранее спасибо!