Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie erzeuge ich eine Zusammenführung von zwei Datensätzen mit einer ausgewählten SQL-Anweisung (Oracle DBMS)?

Roman, Sie müssen einen vollständigen äußeren Join für Ihre Auswahl durchführen, damit für jede bestimmte Ereignistyp-ID (und ich gehe davon aus, dass Sie sowohl in Ihren vergangenen als auch in Ihren zukünftigen Tabellen 0 oder 1 Zeile für eine bestimmte Ereignistyp-ID haben) Sie werden eine einzelne Zeile und die entsprechenden Null- und Nicht-Null-Daten ausgeben.

Die erste Antwort kombiniert die Daten aus den beiden Quellen nicht in einer einzigen Zeile, was meiner Meinung nach von Ihnen verlangt wurde.

Die zweite Antwort war näher, würde aber aufgrund des inneren Joins nur für Zeilen mit sowohl einem vergangenen als auch einem zukünftigen Datum funktionieren (dh:eines in jeder Tabelle).

Beispiel:

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

Beachten Sie, dass die nvl-Funktion für Oracle bestimmt ist und die erste Nicht-Null-Funktion verwendet, die sie sieht. ISNULL kann für SQL Server verwendet werden.