Roman, bạn cần thực hiện kết hợp bên ngoài đầy đủ theo lựa chọn của mình để đối với bất kỳ id loại sự kiện nhất định nào (và tôi giả định rằng bạn sẽ có 0 hoặc 1 hàng trong cả bảng trước đây và tương lai cho bất kỳ id loại sự kiện cụ thể nào), bạn sẽ xuất ra một hàng duy nhất và các ngày rỗng và không rỗng thích hợp.
Câu trả lời đầu tiên sẽ không kết hợp ngày từ hai nguồn thành một hàng duy nhất, đó là điều tôi tin rằng bạn đã yêu cầu.
Câu trả lời thứ hai gần hơn, nhưng sẽ chỉ hoạt động đối với các hàng có cả ngày trong quá khứ và tương lai (tức là:một trong mỗi bảng) do liên kết bên trong.
Ví dụ:
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
Lưu ý rằng hàm nvl dành cho Oracle và sẽ sử dụng hàm không null đầu tiên mà nó nhìn thấy. ISNULL có thể được sử dụng cho SQL Server.