Oracle
 sql >> Database >  >> RDS >> Oracle

Come produrre l'unione di due set di dati con l'istruzione SQL selezionata (Oracle DBMS)?

Roman, devi eseguire un join esterno completo sulla tua selezione in modo che, per qualsiasi ID tipo di evento (e suppongo che avrai 0 o 1 riga nelle tabelle passate e future per qualsiasi ID tipo di evento particolare), genererai una singola riga e le date null e non null appropriate.

La prima risposta non unirà le date delle due fonti in un'unica riga, come credo tu abbia chiesto.

La seconda risposta era più vicina, ma avrebbe funzionato solo per righe con una data passata e futura (ad esempio una in ogni tabella) a causa dell'unione interna.

Esempio:

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

Nota che la funzione nvl è per Oracle e utilizzerà il primo non null che vede. ISNULL può essere utilizzato per SQL Server.