Pular para o conteúdo
Visualizando 5 posts - 1 até 5 (de 5 do total)
  • Autor
    Posts
  • #102741
    Avatar de RoninRonin
    Participante

      Pessoal, estou tomando um tempão no desenvolvimento de um update.
      Tabela = A (acod,afilial,aquant,acusto)
      Tabela = B (bcod,bfilial,bquant,bcusto)

      Eu preciso atualizar o dado q está na tabela B na Tabela A onde os dados de quantidade estejam diferentes.

      Ex de update para SQL SERVER!!
      update a set a.aquant = b.bquant
      from A a
      join B b on a.acod = b.acod and a.afilial = b.bfilial
      where a.aquant <>b.bquant

      Como fica no oracle ?

      Obrigado!

      #102745
      Avatar de ithigvoithigvo
      Participante

        Tenta assim:
        update tabelaA a
        set a.quant = (
        select b.quant
        from tabelaB b
        where a.acod = b.bcod
        and a.afilial = b.bfilial
        and a.aquant != b.bquant
        )
        where exists (
        select 1
        from tabelaB b
        where a.acod = b.bcod
        and a.afilial = b.bfilial
        and a.aquant != b.bquant
        )

        Obs.: Estou chutando que cod e filial são chaves nas duas tabelas…

        #102748
        Avatar de rmanrman
        Participante

          @Ronin

          Solução utilizando MERGE:

          http://miltonbastos.com/2011/07/29/merge/

          O MERGE realmente clona e mante toda a sincronia, qualquer diferença em qualquer coluna é sincronizada fazendo um “UPDATE”, diferença de quantidade de registro é tratada com um “INSERT” e “DELETE”.

          #102768
          Avatar de RoninRonin
          Participante

            Obrigado, o merge deu certinho!!

            #102800
            Avatar de ramasineramasine
            Participante

              Merge, nestes casos, é sempre a melhor opção!

            Visualizando 5 posts - 1 até 5 (de 5 do total)
            • Você deve fazer login para responder a este tópico.
            plugins premium WordPress