none
Ajuda com somatória de valores RRS feed

  • Pergunta

  • Bom dia, 

    Estou com um problema que não sei como resolver, estou fazendo a somatório da coluna amountCur que é do tipo numeric(26,12) no periodo do mes de junho, e esta vindo diferença de 0,16 centavos quando deveria vir zerado... exportando os valores para o excel, tem em torno de 7 mil registros onde o amountCur vem com valores a partir da 15ª casa decimal... e fazendo a somatoria desses valores com problema, vem a diferença de 0,16.

    Minha duvida é: como pode ter casas decimais depois da 12 sendo q meu tipo é numeric(26,12) e tem algum jeito de tratar isso, ja tentei fazendo round e cast e ainda vem essa diferença.

    Alguem pode esclarecer essa minha duvida, obrigado

    quarta-feira, 29 de maio de 2013 13:32

Respostas

  • Sim, mas isto teria que ser feito antes de inserir na sua tabela, por que depois que inserir voce não tem como saber se a ultima casa foi arredondada para cima, para baixo ou esta correta.

    O ideal seria ou voce aumentar o tamanho do campo, ou limitar as 12 casas na sua aplicação ou no arquivo dependendo de onde vem a informação.

    Outra possibilidade é no seu processo voce converter o campo e pegar somente 12 casas depois do ponto e inserir mas como disse se ja foi inserido fica dificil de saber.


    Alexandre Matayosi Conde Mauricio.

    • Marcado como Resposta Tiago.Fernandes quarta-feira, 29 de maio de 2013 16:59
    quarta-feira, 29 de maio de 2013 13:56

Todas as Respostas

  • Bom dia Tiago !

    O que acontece é que mesmo que o seu tipo é (26,12) se voce tentar inserir mais de 12 casas depois do ponto o SQL vai permitir, porem na decima segunda casa vai ter o arredondamento como voce pode ver no exemplo abaixo:

    Create table #temp (campo numeric(26,12))
    
    insert into #temp
    values (1.987654321987)
    
    insert into #temp
    values (1.9876543219876543)
    
    select * from #temp
    O que aconselharia seria aumentar o tamanho de 12 para 18 por exemplo.

    Alexandre Matayosi Conde Mauricio.

    quarta-feira, 29 de maio de 2013 13:43
  • Entendi, mas teria como arredondar ao ponto para excluir o restante das casas decimais, tentei usar o truncate a partir da casa 13 e nao funcionou, continua trazendo 0,16 na somatoria
    quarta-feira, 29 de maio de 2013 13:46
  • Sim, mas isto teria que ser feito antes de inserir na sua tabela, por que depois que inserir voce não tem como saber se a ultima casa foi arredondada para cima, para baixo ou esta correta.

    O ideal seria ou voce aumentar o tamanho do campo, ou limitar as 12 casas na sua aplicação ou no arquivo dependendo de onde vem a informação.

    Outra possibilidade é no seu processo voce converter o campo e pegar somente 12 casas depois do ponto e inserir mas como disse se ja foi inserido fica dificil de saber.


    Alexandre Matayosi Conde Mauricio.

    • Marcado como Resposta Tiago.Fernandes quarta-feira, 29 de maio de 2013 16:59
    quarta-feira, 29 de maio de 2013 13:56