У меня есть таблица, которая возвращает следующий вывод:
SELECT * FROM MEMBER_ACHIEVEMENTS;
--------------------------------------------------------
| CATEGORY_ID | MEMBER_ID | MILESTONE | MILESTONE_DATE |
--------------------------------------------------------
| GOLF | 1001 | WINNER | 23-JAN-2019 |
| GOLF | 1001 | SECOND | 12-AUG-2019 |
| GOLF | 1001 | THIRD | 18-DEC-2018 |
| GOLF | 1002 | WINNER | 11-FEB-2018 |
| GOLF | 1003 | SECOND | 17-APR-2018 |
| GOLF | 1003 | WINNER | 30-MAR-2019 |
| GOLF | 1004 | SECOND | 10-JUN-2017 |
| GOLF | 1004 | WINNER | 15-JAN-2019 |
| GOLF | 1004 | SECOND | 19-FEB-2019 |
--------------------------------------------------------
Я хотел бы отобразить CATEGORY_ID и MEMBER_ID для всех участников, которые имеют MILESTONE = 'WINNER' и имеют другую веху с MILESTONE_DATE больше (позже), чем дата MILESTONE = 'WINNER' и MILESTONE <> 'WINNER'.
Ожидаемый вывод:
---------------------------
| CATEGORY_ID | MEMBER_ID |
---------------------------
| GOLF | 1001 |
| GOLF | 1004 |
---------------------------
Я попытался выполнить запрос :
SELECT CATEGORY_ID, MEMBER_ID FROM MEMBER_ACHIEVEMENTS WHERE MEMBER_ID IN
(
SELECT CATEGORY_ID, MEMBER_ID FROM MEMBER_ACHIEVEMENTS WHERE MILESTONE_DATE >
(
SELECT CATEGORY_ID, MEMBER_ID, MILESTONE_DATE FROM MEMBER_ACHIEVEMENTS WHERE MILESTONE='WINNER'
)
);
Я был бы очень благодарен, если бы кто-нибудь мог помочь мне исправить этот запрос.