Ниже приведено прямое упрощение запроса в вопросе, взяв MAX (любая строка) против MIN (любая строка). Ответ Скрама Мейстера также исправляет логику ОП, чтобы правильно обрабатывать промежутки между заданиями.
Это должно быть все, что вам нужно. Наличие таблицы student_schools JOINed, по-видимому, не добавляет значения, если только не существует случаев, когда существуют записи position_rd без записи
student_schools
.
CREATE TABLE student_totalexp2 nologging compress AS
SELECT b.member_sk,
NVL(MAX(TO_DATE(b.end_date,'yyyymm')), SYSDATE)
- MIN(TO_DATE(b.start_date,'yyyymm')) as days_experience
FROM rdorwart.position_rd b
GROUP BY b.member_sk
HAVING NVL(MAX(TO_DATE(b.end_date,'yyyymm')), SYSDATE)
- MIN(TO_DATE(b.start_date,'yyyymm')) < 730
- NVL заботится о замене несуществующей конечной даты на SYSDATE
Если вам нужно проверить student_schools
- просто добавьте ВНУТРЕННЕЕ СОЕДИНЕНИЕ. Больше нигде это не нужно.