Division by zero no firebird

Firebird

19/12/2012

Ola pessoal blz...

seguinte, tenho um select onde faco uns calculos, porem em uma divisão estã dando division by zero, sei que esta dando pq o campo esta zerado provavelmente, existe alguma forma de solucionar este problema no select!?

vlw

Ricardo
Ricardo Matarazzo

Ricardo Matarazzo

Curtidas 0

Respostas

Rafael Cunha

Rafael Cunha

19/12/2012

Rapaz,

Poste o código usado.
GOSTEI 0
Ricardo Matarazzo

Ricardo Matarazzo

19/12/2012

select ite_codigo_produto as produto,
ped_vendedor as vendedor,
ven_supervisor as supervisor,
ven_gerente as gerente,
prd_grupo as quebra,
uni_abreviacao as um,
uni_quantidade,
tab_preco_final,
prd_descricao as descricaoProduto,
(sum(ite_total_tab_preco) ) as venda,
(((sum(ite_total_tab_preco) ) / (sum(ite_quantidade))) * uni_quantidade) as media,
((sum(ite_total_tab_preco) ) - ((sum(ite_quantidade) * (tab_preco_final / uni_quantidade)) - ((sum(ite_quantidade) * (tab_preco_final / uni_quantidade)) * ' + FloatToStr(variacao) + '))) as lbvl,

((((sum(ite_total_tab_preco) ) - ((sum(ite_quantidade) * (tab_preco_final / uni_quantidade)) - ((sum(ite_quantidade) * (tab_preco_final / uni_quantidade)) * ' + FloatToStr(variacao) + '))) / (sum(ite_total_tab_preco) )) * 100) as lb, <<<<<<<<<<<<<<<========== O ERRO OCORRE NESTA LINHA POIS ITE_TOTAL_TAB_PRECO PODE SER IGUAL A ZERO

trunc(sum(ite_quantidade) / uni_quantidade) as cx,
((sum(cast(ite_quantidade as numeric(10,4))) / uni_quantidade)-trunc(sum(ite_quantidade) / uni_quantidade)) * uni_quantidade as av,
((sum(ite_quantidade) * (tab_preco_final / uni_quantidade)) - ((sum(ite_quantidade) * (tab_preco_final / uni_quantidade)) * ' + FloatToStr(variacao) + ')) as custo,
sum(ite_total_tab_preco) as preco,
sum((ite_total_tab_desconto/uni_quantidade)*ite_quantidade) as desconto,
sum(ite_quantidade) as qtd,
sum(adf_valor) as adf
from VW_RELATORIO
left join cad_tabela on cad_tabela.tab_produto = vw_relatorio.ite_codigo_produto and
cad_tabela.tab_codigo = '99999'
group by 1,2,4,3,5,6,7,8,9
GOSTEI 0
Deivison Melo

Deivison Melo

19/12/2012

coloca decode´s (ou case´s) na sua query... Coloquei em alguns lugares... efetue testes e vai colocando seguindo a mesma lógica que eu...

select ite_codigo_produto as produto,
ped_vendedor as vendedor,
ven_supervisor as supervisor,
ven_gerente as gerente,
prd_grupo as quebra,
uni_abreviacao as um,
uni_quantidade,
tab_preco_final,
prd_descricao as descricaoProduto,
(sum(ite_total_tab_preco) ) as venda,
(((Decode(sum(ite_total_tab_preco),0,1,sum(ite_total_tab_preco))) / (sum(ite_quantidade))) * uni_quantidade) as media,
((sum(ite_total_tab_preco) ) - ((sum(ite_quantidade) * (Decode(tab_preco_final,0,1,tab_preco_final) / uni_quantidade)) - ((sum(ite_quantidade) * (Decode(tab_preco_final,0,1,tab_preco_final) / uni_quantidade)) * ' + FloatToStr(variacao) + '))) as lbvl,
((((sum(ite_total_tab_preco) ) - ((sum(ite_quantidade) * (Decode(tab_preco_final,0,1,tab_preco_final) / uni_quantidade)) - ((sum(ite_quantidade) * (Decode(tab_preco_final,0,1,tab_preco_final) / uni_quantidade)) * ' + FloatToStr(variacao) + '))) / (sum(ite_total_tab_preco) )) * 100) as lb, <<<<<<<<<<<<<<<========== O ERRO OCORRE NESTA LINHA POIS ITE_TOTAL_TAB_PRECO PODE SER IGUAL A ZERO

trunc(sum(ite_quantidade) / uni_quantidade) as cx,
((sum(cast(ite_quantidade as numeric(10,4))) / uni_quantidade)-trunc(sum(ite_quantidade) / uni_quantidade)) * uni_quantidade as av,
((sum(ite_quantidade) * (tab_preco_final / uni_quantidade)) - ((sum(ite_quantidade) * (tab_preco_final / uni_quantidade)) * ' + FloatToStr(variacao) + ')) as custo,
sum(ite_total_tab_preco) as preco,
sum((ite_total_tab_desconto/uni_quantidade)*ite_quantidade) as desconto,
sum(ite_quantidade) as qtd,
sum(adf_valor) as adf
from VW_RELATORIO
left join cad_tabela on cad_tabela.tab_produto = vw_relatorio.ite_codigo_produto
and cad_tabela.tab_codigo = '99999'
group by 1,2,4,3,5,6,7,8,9



qualquer coisa estou à disposição!

GOSTEI 0
Ricardo Matarazzo

Ricardo Matarazzo

19/12/2012

legal.. vlw.. vou fazer um teste aki.. e posto o resultado


GOSTEI 0
Ricardo Matarazzo

Ricardo Matarazzo

19/12/2012

vlw.. funcionou legal...
abc
GOSTEI 0
POSTAR