Roman, musisz wykonać pełne złącze zewnętrzne na swojej selekcji, aby dla dowolnego identyfikatora typu zdarzenia (i zakładam, że będziesz mieć 0 lub 1 wiersz w swoich przeszłych i przyszłych tabelach dla dowolnego identyfikatora typu zdarzenia), wypiszesz jeden wiersz oraz odpowiednie daty null i inne niż null.
Pierwsza odpowiedź nie połączy dat z dwóch źródeł w jednym wierszu, o co, jak sądzę, prosiłeś.
Druga odpowiedź była bliższa, ale zadziałałaby tylko dla wierszy z datą przeszłą i przyszłą (tj. po jednym w każdej tabeli) ze względu na sprzężenie wewnętrzne.
Przykład:
insert into event_target (event_type_id, past_event_date, future_event_date)
select nvl(p.event_type_id, f.event_type_id), p.event_date, f.event_date
from
events_source_1 p full outer join
events_source_2 f on p.event_type_id = f.event_type_id
Zauważ, że funkcja nvl jest przeznaczona dla Oracle i użyje pierwszego niepustego, jaki zobaczy. ISNULL może być używany dla SQL Server.