Хорошо, этот может быть немного хитрым, поэтому позвольте мне начать с визуального.
Вот как выглядят данные: Исходные данные из источника
Я пытаюсь упростить это так, чтобы это выглядело так: Конечный результат, к которому я стремлюсь
Проблема в том, что у меня есть сотрудник, который сменил прежнего менеджера, поэтому, когда я пытаюсь разделить и сгруппировать данные, эти два экземпляра объединяются, и я получаю данные, которые выглядят следующим образом: Фактические результаты
На изображении выше мы видим, что У менеджера Тома есть даты начала и окончания, которые находятся в пределах даты начала и конца менеджера Боба, что является ошибкой. Любые предложения о том, как изолировать группировку предмета, который будет повторно введен позже? Я полагаю, что это будет определяться датой начала и ранжированием раздела, но я не могу заставить его работать.
Вот запрос для построения примера данных:
CREATE VOLATILE TABLE VT_AGENT
(
EmpID INT
,Manager VARCHAR(16)
,Director VARCHAR(16)
,Record_Start DATE
,Record_End DATE
) ON COMMIT PRESERVE ROWS;
INSERT INTO vt_agent VALUES(12345678, 'Jill M.', 'Mike B.', '2019-08-21', '2019-09-07');
INSERT INTO vt_agent VALUES(12345678, 'Jill M.', 'Mike B.', '2019-09-07', '2019-09-16');
INSERT INTO vt_agent VALUES(12345678, 'Bob S.', 'Mike B.', '2019-09-16', '2019-10-15');
INSERT INTO vt_agent VALUES(12345678, 'Bob S.', 'Mike B.', '2019-10-15', '2019-11-23');
INSERT INTO vt_agent VALUES(12345678, 'Tom A.', 'Mike B.', '2019-11-23', '2019-12-07');
INSERT INTO vt_agent VALUES(12345678, 'Tom A.', 'Mike B.', '2019-12-07', '2019-12-12');
INSERT INTO vt_agent VALUES(12345678, 'Bob S.', 'Mike B.', '2019-12-12', '2020-01-15');
INSERT INTO vt_agent VALUES(12345678, 'Bob S.', 'Mike B.', '2020-01-15', '9999-12-31');
Select * FROM VT_AGENT