Como combinar várias linhas em uma só com o SQL da Oracle

Escrito por doug leenhouts | Traduzido por josé fabián
  • Compartilhar
  • Tweetar
  • Compartilhar
  • Pin
  • E-mail
Como combinar várias linhas em uma só com o SQL da Oracle
É importante evitar registros duplicados em bancos de dados, principalmente se forem grandes (Thinkstock Images/Comstock/Getty Images)

Combinar linhas em um banco de dados é uma forma comum de remover entradas duplicadas em uma tabela ou de combinar registros de várias. O comando "merge" deve ser usado com coincidências ("matches") e deve estabelecer-se critérios específicos para que uma match seja identificada. Uma base de dados limpa é crítica para sistemas empresariais e de arquivamento, pois evitar repetir esforços pode economizar muito dinheiro. Isso é útil quando há vários registros com a mesma informação (como endereços e números telefônicos) em diferentes formatos.

Nível de dificuldade:
Moderadamente fácil

Outras pessoas estão lendo

Instruções

  1. 1

    Identifique as tabelas nas quais se localizam as linhas que você quer combinar. A tabela velha será a origem e a nova, o destino.

  2. 2

    Identifique os critérios a serem usados para encontrar as coincidências em campos comuns a ambas tabelas.

  3. 3

    Use a sentença "merge", cuja sintaxe é a seguinte:

    MERGE INTO <tabelaDestino> USING <tabelaOrigem> ON (<tabelaDestino.campodecriterio = tabelaOrigem.campodecriterio>)

    Por exemplo, se você tiver uma tabela de novos estudantes chamada "NEW_STUDENTS" e quer combiná-la com uma existente chamada "STUDENTS", e o critério é uma coincidência (match) no campo "STUDENT_ID". Logo, a sentença será:

    MERGE INTO STUDENTS USING NEW_STUDENTS ON (STUDENTS.STUDENT_ID = NEW_STUDENTS.STUDENT_ID)

  4. 4

    Escreva uma sentença "insert" para os registros que não coincidam. A sintaxe é a seguinte:

    WHEN NOT MATCHED THEN INSERT (tabelaDestino.campo1, tabelaDestino.campo2, tabelaDestino.campo3) INTO (tabelaOrigem.campo1, tabelaOrigem.campo2, tabelaOrigem.campo3);

    Continuando com o exemplo, quaisquer registros que não existirem serão inseridos usando a sentença:

    WHEN NOT MATCHED INSERT (STUDENTS.STUDENT_ID, STUDENTS.FIRST_NAME, STUDENTS.LAST_NAME) VALUES (NEW_STUDENTS.STUDENT_ID, NEW_STUDENTS.FIRST_NAME, NEW_STUDENTS.LAST_NAME)

  5. 5

    Elimine a tabela de origem para completar a fusão.

Não perca

Filtro:
  • Geral
  • Artigos
  • Slides
  • Vídeos
Mostrar:
  • Mais relevantes
  • Mais lidos
  • Mais recentes

Nenhum artigo disponível

Nenhum slide disponível

Nenhum vídeo disponível