Division by zero no firebird
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
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
Curtidas 0
Respostas
Rafael Cunha
19/12/2012
Rapaz,
Poste o código usado.
Poste o código usado.
GOSTEI 0
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
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
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!
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
19/12/2012
legal.. vlw.. vou fazer um teste aki.. e posto o resultado
GOSTEI 0
Ricardo Matarazzo
19/12/2012
vlw.. funcionou legal...
abc
abc
GOSTEI 0