Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment produire la fusion de deux ensembles de données avec l'instruction SQL select (SGBD Oracle) ?

Roman, vous devez effectuer une jointure externe complète sur votre sélection afin que, pour tout identifiant de type d'événement donné (et je suppose que vous aurez 0 ou 1 ligne dans vos tables passées et futures pour tout identifiant de type d'événement particulier), vous obtiendrez une seule ligne et les dates nulles et non nulles appropriées.

La première réponse ne combinera pas les dates des deux sources en une seule ligne, ce que je crois que vous avez demandé.

La deuxième réponse était plus proche, mais ne fonctionnerait que pour les lignes avec une date passée et future (c'est-à-dire une dans chaque table) en raison de la jointure interne.

Exemple :

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

Notez que la fonction nvl est pour Oracle et utilisera la première non nulle qu'elle verra. ISNULL peut être utilisé pour SQL Server.