Usuário com melhor resposta
Converter varchar(10) para numero para realizar somas

Pergunta
-
Bom dia, estou com um problema de tratamento de dados importados.
Na importaçao dos dados, a coluna valor_euros ficou como varchar(10), onde o ponto (.) separa as casas decimais.
-00000000000.33
00000000010.31
Quando tento somar, dá erro porque não reconhecer como numero.
SEELECT
a.rubrica,
b.Nova_classificacaoUE,
sum(cast(replace(a.[valor_euros],'.',',') as decimal(18,2))) as total
FROM
[dbo].[FKM151_D180105.T1800_79 a 84_ 2015] AS a
INNER JOIN [dbo].[Cliente_classificacaoUE_unica_final_2018.01.16] AS b
ON a.N_CLIENTE=b.N_CLIENTE
GROUP BY a.[rubrica], b.Nova_classificacaoUE
- Editado MS_22222 quarta-feira, 17 de janeiro de 2018 12:23
Respostas
-
Deleted
- Sugerido como Resposta Junior Galvão - MVPMVP sábado, 20 de janeiro de 2018 00:42
- Marcado como Resposta Filipe B CastroModerator terça-feira, 23 de janeiro de 2018 18:40
Todas as Respostas
-
Você não precisa fazer o REPLACE antes do CAST. O separador de decimal é o ponto.
Juliano Nunes - http://linkedin.com/in/julianonunes
Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.
Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.
-
Deleted
- Sugerido como Resposta Rafael Almeida - MVPMVP quarta-feira, 17 de janeiro de 2018 21:06
-
-
Obrigado a todos.
Desculpe a ignorância, mas devo colocar este exemplo antes do SELECT? E, assim, no somatório vem apenas valor_euros em vez do CAST? Isto é:
declare @valor_euros varchar(10)
set @valoreuros = '0125,63'
print convert(decimal(18,2),replace(@valor_euros,',','.'))SEELECT
a.rubrica,
b.Nova_classificacaoUE,
sum(valor_euros) as total
FROM
[dbo].[FKM151_D180105.T1800_79 a 84_ 2015] AS a
INNER JOIN [dbo].[Cliente_classificacaoUE_unica_final_2018.01.16] AS b
ON a.N_CLIENTE=b.N_CLIENTE
GROUP BY a.[rubrica], b.Nova_classificacaoUE
-
-
-
Boa noite,
O resultado depois de aplicar o declare @valor_euros alterou o ponto para virgula mas o somatório continua a dizer que não permite fazer porque é varchar.
varchar(10) varchar(14) varchar(17)
n_cliente rubrica valor_euros
0099101010 77766611111111 -0000000000030,00
0099101010 77766611111111 -0000000000000,12
0099101010 77766611111111 -0000000000028,73
0099101010 77766611111111 -0000000000002,03
0099101010 77766611111111 -0000000000033,02
0099101010 77766611111111 -0000000000042,70
0099101010 77766611111111 -0000000000037,88
0099101010 77766611111111 -0000000000001,68
0099101010 77766611111111 -0000000000016,33
0099101010 77766611111111 -0000000000023,33
-
-
-
Deleted
- Sugerido como Resposta Junior Galvão - MVPMVP sábado, 20 de janeiro de 2018 00:42
- Marcado como Resposta Filipe B CastroModerator terça-feira, 23 de janeiro de 2018 18:40
-
Boa tarde,
Por falta de retorno essa thread está encerrada.
Se necessário, favor abrir uma nova thread.
Atenciosamente,Filipe B de Castro
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
-