sql >> Databáze >  >> RDS >> Oracle

Jak vytvořit sloučení dvou datových sad s vybraným příkazem SQL (Oracle DBMS)?

Romane, na svém výběru musíte provést úplné vnější spojení, takže pro jakékoli dané id typu události (a předpokládám, že budete mít 0 nebo 1 řádek v tabulkách minulosti i budoucnosti pro jakékoli konkrétní id typu události) vypíšete jeden řádek a příslušná data null a non null.

První odpověď nebude spojovat data z těchto dvou zdrojů do jednoho řádku, což je podle mého názoru to, co jste požadovali.

Druhá odpověď byla bližší, ale díky vnitřnímu spojení by fungovala pouze pro řádky s minulým i budoucím datem (tj. jeden v každé tabulce).

Příklad:

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

Všimněte si, že funkce nvl je pro Oracle a použije první nenulovou, kterou vidí. ISNULL lze použít pro SQL Server.



  1. Jak sloučit více řádků v MySQL?

  2. Proč je CTE lepší než kurzorová/odvozená tabulka/poddotazy/dočasná tabulka atd.?

  3. Příklady transakcí PHP + MySQL

  4. Funkce vrací více sloupců jako jeden sloupec namísto více sloupců