sql >> Base de Datos >  >> RDS >> Oracle

¿Cómo producir la fusión de dos conjuntos de datos con una instrucción SQL seleccionada (Oracle DBMS)?

Roman, debe hacer una combinación externa completa en su selección para que, para cualquier ID de tipo de evento dado (y supongo que tendrá 0 o 1 fila en sus tablas pasadas y futuras para cualquier ID de tipo de evento en particular), generará una sola fila y las fechas nulas y no nulas apropiadas.

La primera respuesta no combinará las fechas de las dos fuentes en una sola fila, que es lo que creo que solicitó.

La segunda respuesta estaba más cerca, pero solo funcionaría para filas con una fecha pasada y futura (es decir, una en cada tabla) debido a la unión interna.

Ejemplo:

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

Tenga en cuenta que la función nvl es para Oracle y utilizará el primer no nulo que vea. ISNULL se puede usar para SQL Server.