Fórum Duvida SQL #58732
26/08/2007
0
estou montando um sql onde eu divido 2 valores, e gostaria que o retorno fosse em float.
EX:
select (it_qtde/it_qtde_cx) from itens_lista
bom com este exemplo se a expresão ficar 25/3 o select me retorna apenas 8, quando na verdade deveria ser 8.33.
outro exemplo é se o valor for 3/25 o select me retorna 0 e eu gostaria que ele retorna-se 0.12, alguem pode me ajudar? Valeu!
Shakall
Curtir tópico
+ 0Posts
26/08/2007
Sillier
tente fazer um cast numeric (15,2) para retornar o valor formato como quer.
isso deve resolver seu problema!
qualquer coisa posta aew..
[]´s
Gostei + 0
26/08/2007
Shakall
Amigo valeu pela ajuda, fiz o que vc me disse meu sql ficou assim
select p.pro_nome, p.pro_qtde_cx, il.ite_qtde,(cast((il.ite_qtde/p.pro_qtde_cx)as numeric(15,2)))
from itens_lista il, produtos p
where il.list_cod=1 and il.pro_cod=p.pro_cod
bom o valor do expresão ficou desta forma (cast((5/25)as numeric(15,2)))
o resultado foi 0.00, hehe quase chegamos lah mas o resultado correto seria 0.2
Banco de dados utilizado: Firebird
Gostei + 0
26/08/2007
Emerson Nascimento
Gostei + 0
27/08/2007
Shakall
to querendo assim, se o valor retornado for 0.5 ele deixa 1, se for 0.3 ele deixa 1, ou seja arredondar sem pra cima, agora caso o resultado fir 1 ou 2 numero redondo ai ele nem mexe, deixa do jeito que estar. neste caso acho melhor fazer um procedure neh? pelo fato de que vou ter que trabalhar com IF, ou tem como montar um sql pra fazer isso?
Gostei + 0
27/08/2007
Emerson Nascimento
por exemplo:
select cast( valor + 0.4 as integer)
ou ainda usar uma UDF para arredondamento.
Gostei + 0
27/08/2007
Shakall
´cast((il.ite_qtde/cast(p.pro_qtde_cx as numeric(15,2)))+0.4 as integer)´
Valeu!!!!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)