GARANTIR DESCONTO

Fórum Duvida SQL #58732

26/08/2007

0

Galera estou com uma duvida, gostaria de saber se é possivel fazer o seguinte:

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

Shakall

Responder

Posts

26/08/2007

Sillier

olá shakall,

tente fazer um cast numeric (15,2) para retornar o valor formato como quer.
isso deve resolver seu problema!

qualquer coisa posta aew..

[]´s


Responder

Gostei + 0

26/08/2007

Shakall

olá shakall, tente fazer um cast numeric (15,2) para retornar o valor formato como quer. isso deve resolver seu problema! qualquer coisa posta aew.. []´s


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


Responder

Gostei + 0

26/08/2007

Emerson Nascimento

select (it_qtde/ cast(it_qtde_cx as numeric(15,3))) from itens_lista


Responder

Gostei + 0

27/08/2007

Shakall

valeu deu certinho, agora mais uma duvida existe alguma função pronto no firebird para round,trunc? ou algum meio de fazer isso?

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?


Responder

Gostei + 0

27/08/2007

Emerson Nascimento

com cast() deve funcionar. mas para garantir o arredondamento pra cima, você deverá somar o valor com 0.4.

por exemplo:

select cast( valor + 0.4 as integer)

ou ainda usar uma UDF para arredondamento.


Responder

Gostei + 0

27/08/2007

Shakall

valeu cara deu certo heeh ficou assim
´cast((il.ite_qtde/cast(p.pro_qtde_cx as numeric(15,2)))+0.4 as integer)´

Valeu!!!!


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar