Query p/ transformar texto em inteiro

SQL Server

07/07/2008

pessoal preciso fazer uma soma num campo texto, como poderia apenas na query converter os dados, segue abaixo o meu ex

select I.Cod_venda, I.Cod_Produto, P.Descricao_Produto, sum(I.Quantidade_VendaItens)  from VendaItens I


so que o camnpo I.Quantidade_VendaItens é texto, mais contem numeros..

tem como fazer a soma?


Cd.wagner.sena

Cd.wagner.sena

Curtidas 0

Respostas

Ara.es

Ara.es

07/07/2008

Você pode usar o Cast ou Convert. para usar o convert faça:
  select I.Cod_venda,
           I.Cod_Produto,
           P.Descricao_Produto,
           sum( Convert( Numeric(14,2) , I.Quantidade_VendaItens ) )
  from VendaItens I


nesse caso convertir o texto para o tipo NUMERIC(14,2), mas vc pode converter para outros tipos. Flw !!


GOSTEI 0
Cd.wagner.sena

Cd.wagner.sena

07/07/2008

esse é meu codigo

select I.Cod_venda, I.Cod_Produto, P.Descricao_Produto, sum( Convert( Numeric(14,2) , I.Quantidade_VendaItens ) )  from VendaItens I
join Venda V on V.cod_Venda = I.Cod_venda
join Produto P on P.Cod_Produto = I.Cod_Produto
where status_Venda <> ´C´
group by I.Cod_venda, I.Cod_Produto, P.Descricao_Produto, sum( Convert( Numeric(14,2) , I.Quantidade_VendaItens ) )


sop que dá este error

Server: Msg 144, Level 15, State 1, Line 5
Cannot use an aggregate or a subquery in an expression used for the group by list of a GROUP BY clause.


so que o texto que tem na base é decimal, tipo 1,00


GOSTEI 0
Ara.es

Ara.es

07/07/2008

tente tirar do group by o SUM.. e ve se funciona. Flw !!


GOSTEI 0
Cd.wagner.sena

Cd.wagner.sena

07/07/2008

da esse error

Server: Msg 8114, Level 16, State 5, Line 1 Error converting data type varchar to numeric.



GOSTEI 0
Ara.es

Ara.es

07/07/2008

por acaso nao existe algum registro que contem valores nao numericos no campo que está tentando converter?? verifique isso..


GOSTEI 0
Flasp2000

Flasp2000

07/07/2008

select I.Cod_venda,
I.Cod_Produto,
P.Descricao_Produto,
sum( Convert( Numeric(14,2) , I.Quantidade_VendaItens ) )
from VendaItens I
join Venda V
on (V.cod_Venda = I.Cod_venda)
join Produto P
on (P.Cod_Produto = I.Cod_Produto)
where status_Venda <> ´C´
group by I.Cod_venda,
I.Cod_Produto,
P.Descricao_Produto


Sempre que você soma um campo, apenas agrupe as outras colunas.

Abraços.


GOSTEI 0
Flasp2000

Flasp2000

07/07/2008

ESSE CAMPO QUE VC ESTA CONVERTENDO, QUAL O DATATYPE DELE ???


GOSTEI 0
Eduardocaetano

Eduardocaetano

07/07/2008

Companheiro, faça:
sum( Convert( Numeric(14,2) , replace(I.Quantidade_VendaItens, ´,´ , ´.´ ) ) )


Deve ser por ter campos que o sql continua entendendo como texto, pois ´,´ é entendido como texto. O [b:2ecc5dcc1b]replace[/b:2ecc5dcc1b] trata isso
Há Braços.

esse é meu codigo
select I.Cod_venda, I.Cod_Produto, P.Descricao_Produto, sum( Convert( Numeric(14,2) , I.Quantidade_VendaItens ) )  from VendaItens I
join Venda V on V.cod_Venda = I.Cod_venda
join Produto P on P.Cod_Produto = I.Cod_Produto
where status_Venda <> ´C´
group by I.Cod_venda, I.Cod_Produto, P.Descricao_Produto, sum( Convert( Numeric(14,2) , I.Quantidade_VendaItens ) )
sop que dá este error
Server: Msg 144, Level 15, State 1, Line 5
Cannot use an aggregate or a subquery in an expression used for the group by list of a GROUP BY clause.
so que o texto que tem na base é decimal, tipo 1,00



GOSTEI 0
Flasp2000

Flasp2000

07/07/2008

AMIGO TIRE DO SEU GROUP BY O SUM


GOSTEI 0
POSTAR