Pular para o conteúdo
Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #93355
    isacjop
    Participante

      estou fazendo um trabalho de migração de dados e tenho que atualizar alguns campos em uma tabela, dados esses que são extraidos de uma outra tabela. Utilizei um Update dentro de um Select, conforme abaixo:

      SELECT ‘UPDATE quant_movimentacoes_caged SET
      qt_acert_inclusao_adm =’+ sum(adm_inclusao) +
      ‘, qt_acerto_exclusao_adm =’+ sum(adm_exclusao) +
      ‘, qt_acerto_inclusao_desl =’+ sum(des_inclusao) +
      ‘, qt_acerto_exclusao_desl =’+ sum(des_exclusao) +
      ‘ WHERE nu_doc_identificacao =’+ identificador +
      ‘ AND cs_tipo_doc_ident_estab =’+ tipo_identificador +
      ‘ AND nu_ano = ‘+ substr(to_char(competencia),1,4) +
      ‘ AND nu_mes = ‘+ substr(to_char(competencia),5,2)
      from tdetalhe_extrato_acerto
      group by identificador, tipo_identificador, competencia
      having count(*) > 1

      Esse select deveria gerar registros que seriam os update’s. Utilizei muito esse recurso em migração de dados no sql-server… só que no oracle esta dando uma mensagem de erro “Invalid Number”. Vou especificar os tipos de dados dos campos da tabela tdetalhe_extrato_acerto:

      identificador(char)
      tipo_identificador(number)
      competencia(number)
      adm_inclusao(number)
      adm_exclusao(number)
      des_inclusao(number)
      des_exclusao(number)

      #93357
      Avatar photoRegis Araujo
      Participante

        Fala Isac..!

        Seguinte.. no oracle.. para vc rodar isto.. ao invés do sinal de MAIS (+) vc usa o duplo PIPE || .. assim..!

        SELECT 'UPDATE quant_movimentacoes_caged SET
        qt_acert_inclusao_adm =' || sum(adm_inclusao) ||
        ', qt_acerto_exclusao_adm =' || sum(adm_exclusao) ||
        ', qt_acerto_inclusao_desl =' || sum(des_inclusao) ||
        ', qt_acerto_exclusao_desl =' || sum(des_exclusao) ||
        ' WHERE nu_doc_identificacao =' || identificador ||
        ' AND cs_tipo_doc_ident_estab =' || tipo_identificador ||
        ' AND nu_ano = ' || substr(to_char(competencia),1,4) ||
        ' AND nu_mes = ' || substr(to_char(competencia),5,2)
        from tdetalhe_extrato_acerto
        group by identificador, tipo_identificador, competencia
        having count(*) > 1

        Desta maneira vc irá “UNIR” os valores no retorno do seu select..!

        Abraços..!

        #93367
        isacjop
        Participante

          Valeu… era isso mesmo. é que nunca tinha trabalhado antes com o oracle.

          []´s

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