Роман, вам нужно выполнить полное внешнее объединение для вашего выбора, чтобы для любого данного идентификатора типа события (и я предполагаю, что у вас будет 0 или 1 строка в ваших прошлых и будущих таблицах для любого конкретного типа события id), вы выведете одну строку и соответствующие нулевые и ненулевые даты.
Первый ответ не объединит даты из двух источников в одну строку, как я и просил.
Второй ответ был ближе, но он работал бы только для строк с прошлой и будущей датой (то есть: по одной в каждой таблице) из-за внутреннего соединения.
Пример:
insert into event_target (event_type_id, past_event_date, future_event_date)<br>
select nvl(p.event_type_id, f.event_type_id), p.event_date, f.event_date<br>
from<br>
events_source_1 p full outer join<br>
events_source_2 f on p.event_type_id = f.event_type_id<br>
Обратите внимание, что функция nvl предназначена для Oracle и будет использовать первый ненулевой объект, который он видит. ISNULL может использоваться для SQL Server.