Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como produzir a mesclagem de dois conjuntos de dados com a instrução SQL selecionada (Oracle DBMS)?


Roman, você precisa fazer uma junção externa completa em sua seleção para que, para qualquer ID de tipo de evento (e estou assumindo que você terá 0 ou 1 linha em suas tabelas passadas e futuras para qualquer ID de tipo de evento específico), você produzirá uma única linha e as datas nulas e não nulas apropriadas.

A primeira resposta não combinará as datas das duas fontes em uma única linha, que é o que acredito que você pediu.

A segunda resposta foi mais próxima, mas funcionaria apenas para linhas com datas passadas e futuras (ou seja:uma em cada tabela) devido à junção interna.

Exemplo:

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


Observe que a função nvl é para Oracle e usará o primeiro não nulo que vir. ISNULL pode ser usado para SQL Server.