- Este tópico contém 7 respostas, 3 vozes e foi atualizado pela última vez 14 anos, 9 meses atrás por
Anônimo.
-
AutorPosts
-
26 de julho de 2010 às 8:04 pm #95226
Anônimo
Olá, estou enfrentando um problema referente a uma divisão por zero.
Segue abaixo o trecho:SELECT VW_COMIITEMPEDIVEND.ID_PEDIVEND,
NVL(SUM(VW_COMIITEMPEDIVEND.VL_TOTAITEM),0) VL_TOTAITEM,
DECODE(NVL(SUM(VW_COMIITEMPEDIVEND.VL_TOTAOPER),0), 0, 0, (NVL(SUM(VW_COMIITEMPEDIVEND.VL_FATOCALCCOMI),0) / NVL(SUM(VW_COMIITEMPEDIVEND.VL_TOTAOPER),0)* 100)) AS PC_MEDICOMI,
DECODE(NVL(SUM(VW_COMIITEMPEDIVEND.VL_TOTAITEM),0), 0, 0, (NVL(SUM(VW_COMIITEMPEDIVEND.VL_FATOCALCCOMIFIXO),0) / NVL(SUM(VW_COMIITEMPEDIVEND.VL_TOTAITEM),0)* 100)) AS PC_MEDICOMIFIXO,
NVL(SUM(VW_COMIITEMPEDIVEND.VL_TOTAOPER),0) VL_TOTAOPER,
NVL(SUM(VW_COMIITEMPEDIVEND.VL_FATOCALCCOMI),0) VL_FATOCALCCOMI,
NVL(SUM(VW_COMIITEMPEDIVEND.VL_TOTADEVOITEM),0) AS VL_TOTADEVO,
NVL(SUM(VW_COMIITEMPEDIVEND.VL_DESCZONAFRANITEM),0) AS VL_DESCZONAFRAN,
NVL(SUM(VW_COMIITEMPEDIVEND.VL_DESCFINAITEM),0) AS VL_DESCFINA, — ATE AQUI OK
NVL(SUM(NVL(VW_COMIITEMPEDIVEND.VL_DESCMANUITEM,0)),0) AS VL_DESCMANU
(NVL(SUM(NVL(VW_COMIITEMPEDIVEND.VL_TOTAITEM,0) – NVL(VW_COMIITEMPEDIVEND.VL_TOTADEVOITEM,0) – NVL(VW_COMIITEMPEDIVEND.VL_DESCZONAFRANITEM,0) – NVL(VW_COMIITEMPEDIVEND.VL_DESCFINAITEM,0) – NVL(VW_COMIITEMPEDIVEND.VL_DESCMANUITEM,0) ),0)) AS VL_BASECOMI,
(NVL(SUM((NVL(VW_COMIITEMPEDIVEND.VL_TOTAITEM,0) – NVL(VW_COMIITEMPEDIVEND.VL_TOTADEVOITEM,0) – NVL(VW_COMIITEMPEDIVEND.VL_DESCZONAFRANITEM,0) – NVL(VW_COMIITEMPEDIVEND.VL_DESCFINAITEM,0) – NVL(VW_COMIITEMPEDIVEND.VL_DESCMANUITEM,0)) * NVL(VW_COMIITEMPEDIVEND.PC_COMIITEM,0) / 100),0)) AS VL_TOTACOMI
FROM VW_COMIITEMPEDIVEND
Nesse caso o valor do campo VL_DESCMANU vem 0 (zero) e uma simples consulta desse campo dá erro de divisor 0(zero) alguém sabe como resolver?
27 de julho de 2010 às 4:25 am #95239burga
ParticipanteOi Mayer,
Posta a consulta certinho, a mensagem de erro com o código e a estrutura da “VIEW”(?).
Porque por essa consulta, está faltando pelo menos uma vírgula e o group by, assim não dá pra gente saber se o erro é na sintaxe do comando ou se você que colou errado aí (parece que foi a segunda opção)…
E também, se você está fazendo outra consulta em cima desta que você passou, posta ela também… Pelo menos foi o que eu entendi com:
Nesse caso o valor do campo VL_DESCMANU vem 0 (zero) e uma simples consulta desse campo dá erro de divisor 0(zero) alguém sabe como resolver?
Não sei se entendi direito…
27 de julho de 2010 às 3:49 pm #95244Anônimo
[quote=”burga”:1az3d1l4]Oi Mayer,
Posta a consulta certinho, a mensagem de erro com o código e a estrutura da “VIEW”(?).
Porque por essa consulta, está faltando pelo menos uma vírgula e o group by, assim não dá pra gente saber se o erro é na sintaxe do comando ou se você que colou errado aí (parece que foi a segunda opção)…
E também, se você está fazendo outra consulta em cima desta que você passou, posta ela também… Pelo menos foi o que eu entendi com:
Nesse caso o valor do campo VL_DESCMANU vem 0 (zero) e uma simples consulta desse campo dá erro de divisor 0(zero) alguém sabe como resolver?
Não sei se entendi direito…[/quote]
Olá segue o codigo para analise com a view em si e mais a view na qual é utilizada para consulta:
SELECT VW_COMIITEMPEDIVEND.ID_PEDIVEND,
NVL(SUM(VW_COMIITEMPEDIVEND.VL_TOTAITEM),0) VL_TOTAITEM,DECODE(NVL(SUM(VW_COMIITEMPEDIVEND.VL_TOTAOPER),0), 0, 0, (NVL(SUM(VW_COMIITEMPEDIVEND.VL_FATOCALCCOMI),0) / NVL(SUM(VW_COMIITEMPEDIVEND.VL_TOTAOPER),0)* 100)) AS PC_MEDICOMI, DECODE(NVL(SUM(VW_COMIITEMPEDIVEND.VL_TOTAITEM),0), 0, 0, (NVL(SUM(VW_COMIITEMPEDIVEND.VL_FATOCALCCOMIFIXO),0) / NVL(SUM(VW_COMIITEMPEDIVEND.VL_TOTAITEM),0)* 100)) AS PC_MEDICOMIFIXO, NVL(SUM(VW_COMIITEMPEDIVEND.VL_TOTAOPER),0) VL_TOTAOPER, NVL(SUM(VW_COMIITEMPEDIVEND.VL_FATOCALCCOMI),0) VL_FATOCALCCOMI, NVL(SUM(VW_COMIITEMPEDIVEND.VL_TOTADEVOITEM),0) AS VL_TOTADEVO, NVL(SUM(VW_COMIITEMPEDIVEND.VL_DESCZONAFRANITEM),0) AS VL_DESCZONAFRAN, NVL(SUM(VW_COMIITEMPEDIVEND.VL_DESCFINAITEM),0) AS VL_DESCFINA, NVL(SUM(VW_COMIITEMPEDIVEND.VL_DESCMANUITEM),0) AS VL_DESCMANU, (NVL(SUM(NVL(VW_COMIITEMPEDIVEND.VL_TOTAITEM,0) - NVL(VW_COMIITEMPEDIVEND.VL_TOTADEVOITEM,0) - NVL(VW_COMIITEMPEDIVEND.VL_DESCZONAFRANITEM,0) - NVL(VW_COMIITEMPEDIVEND.VL_DESCFINAITEM,0) - NVL(VW_COMIITEMPEDIVEND.VL_DESCMANUITEM,0) ),0)) AS VL_BASECOMI, (NVL(SUM((NVL(VW_COMIITEMPEDIVEND.VL_TOTAITEM,0) - NVL(VW_COMIITEMPEDIVEND.VL_TOTADEVOITEM,0) - NVL(VW_COMIITEMPEDIVEND.VL_DESCZONAFRANITEM,0) - NVL(VW_COMIITEMPEDIVEND.VL_DESCFINAITEM,0) - NVL(VW_COMIITEMPEDIVEND.VL_DESCMANUITEM,0)) * NVL(VW_COMIITEMPEDIVEND.PC_COMIITEM,0) / 100),0)) AS VL_TOTACOMI
FROM VW_COMIITEMPEDIVEND
GROUP BY VW_COMIITEMPEDIVEND.ID_PEDIVEND
SELECT PVI.ID_ITEMPEDIVEND,
PVI.ID_PEDIVEND,DECODE(((NVL(PVI.VL_UNITITEMPEDIVEND, 0) * NVL(PVI.QN_PESOPADREXPEITEMPEDIVEND,0)) - (NVL(VW_DEVOLUCAO.VL_TOTADEVOITEM,0) * NVL(PVI.VL_UNITITEMPEDIVEND, 0))), 0, 0, (((((NVL(PVI.VL_UNITITEMPEDIVEND, 0) * NVL(PVI.QN_PESOPADREXPEITEMPEDIVEND,0)) - (NVL(VW_DEVOLUCAO.VL_TOTADEVOITEM,0) * NVL(PVI.VL_UNITITEMPEDIVEND, 0))) * NVL(PVI.PC_COMIITEMPEDIVEND, 0))/100) / ((NVL(PVI.VL_UNITITEMPEDIVEND, 0) * NVL(PVI.QN_PESOPADREXPEITEMPEDIVEND,0)) - (NVL(VW_DEVOLUCAO.VL_TOTADEVOITEM,0) * NVL(PVI.VL_UNITITEMPEDIVEND, 0)))* 100)) AS PC_COMIITEM, (NVL(PVI.VL_UNITITEMPEDIVEND, 0) * NVL(PVI.QN_PESOPADREXPEITEMPEDIVEND,0)) AS VL_TOTAITEM, -- TOTAL DOS ITENS SEM DEVOLUÇÕES ((NVL(PVI.VL_UNITITEMPEDIVEND, 0) * NVL(PVI.QN_PESOPADREXPEITEMPEDIVEND,0)) - (NVL(VW_DEVOLUCAO.VL_TOTADEVOITEM,0) * NVL(PVI.VL_UNITITEMPEDIVEND, 0))) AS VL_TOTAOPER, -- TOTAL DA OPERAÇÃO --- FATOR PARA CALCULO DA MÉDIA DE COMISSÃO PARA O PEDIDO --- ((((NVL(PVI.VL_UNITITEMPEDIVEND, 0) * NVL(PVI.QN_PESOPADREXPEITEMPEDIVEND,0)) - (NVL(VW_DEVOLUCAO.VL_TOTADEVOITEM,0) * NVL(PVI.VL_UNITITEMPEDIVEND, 0))) * NVL(PVI.PC_COMIITEMPEDIVEND, 0))/100) VL_FATOCALCCOMI, (((NVL(PVI.VL_UNITITEMPEDIVEND, 0) * NVL(PVI.QN_PESOPADREXPEITEMPEDIVEND,0)) * NVL(PVI.PC_COMIITEMPEDIVEND, 0))/100) VL_FATOCALCCOMIFIXO,
—————————— DESCONTOS ——————————
–> QUEBRA E DEVOLUÇÃO DO ITEM, DESCONTANDO O % DE DESC. FINANCEIRO (AJUSTE DOS ABATIMENTOS E BAIXA DOS TITULOS) e ZONA FRANCA
DECODE(NVL(VW_DEVOLUCAO.VL_TOTADEVOITEM,0) * NVL(PVI.VL_UNITITEMPEDIVEND, 0), 0, 0,
(NVL(VW_DEVOLUCAO.VL_TOTADEVOITEM,0) * NVL(PVI.VL_UNITITEMPEDIVEND, 0)) –
((NVL(VW_DEVOLUCAO.VL_TOTADEVOITEM,0) * NVL(PVI.VL_UNITITEMPEDIVEND, 0)) * NVL((SELECT PC_DESCFINAPEDIVEND FROM PEDIDO_VENDA WHERE ID_PEDIVEND = PVI.ID_PEDIVEND),0)/100) –
(DECODE(NVL(VW_PEDIDO.VL_TOTAITEMPEDI, 0), 0, 0,
NVL(NVL((SELECT (NVL(VL_COFIZONAFRANNOTAFISC,0) + NVL(VL_PISZONAFRANNOTAFISC,0))
FROM NOTA_FISCAL,
NOTA_FISCAL_ITEM,
PEDIDO_VENDA_NOTA_FISCAL PVNF
WHERE PVNF.ID_PEDIVEND = PVI.ID_PEDIVEND
AND NOTA_FISCAL.ID_NOTAFISC = PVNF.ID_NOTAFISC
AND NOTA_FISCAL.ID_NOTAFISC = NOTA_FISCAL_ITEM.ID_NOTAFISC
AND NOTA_FISCAL_ITEM.ID_MATEEMBA = PVI.ID_MATEEMBA
AND NOTA_FISCAL.FL_CANCNOTAFISC = ‘N’
AND NOTA_FISCAL.FL_ZONAFRANNOTAFISC = ‘S’), 0) *
((NVL(PVI.VL_UNITITEMPEDIVEND, 0) * NVL(PVI.QN_PESOPADREXPEITEMPEDIVEND,0)) / NVL(VW_PEDIDO.VL_TOTAITEMPEDI, 0)),0)) +
((NVL(VW_DEVOLUCAO.VL_TOTADEVOITEM, 0) * NVL(PVI.VL_UNITITEMPEDIVEND, 0)) *
NVL((SELECT NOTA_FISCAL_ITEM.PC_ICMSITEMNOTAFISC
FROM NOTA_FISCAL,
NOTA_FISCAL_ITEM,
PEDIDO_VENDA_NOTA_FISCAL PVNF
WHERE PVNF.ID_PEDIVEND = PVI.ID_PEDIVEND
AND NOTA_FISCAL.ID_NOTAFISC = PVNF.ID_NOTAFISC
AND NOTA_FISCAL.ID_NOTAFISC = NOTA_FISCAL_ITEM.ID_NOTAFISC
AND NOTA_FISCAL_ITEM.ID_MATEEMBA = PVI.ID_MATEEMBA
AND NOTA_FISCAL.FL_CANCNOTAFISC = ‘N’
AND NOTA_FISCAL.FL_ZONAFRANNOTAFISC = ‘S’), 0) /100))) AS VL_TOTADEVOITEM,--> ZONA FRANCA PROPORCIONAL AO ITEM (ICMS, PIS e COFINS) -- PIS e COFINS é distribuido proporcinalmente pois, até o momento, o % deles é por Pedido, e não por Item -- Na devolução o PIS e COFINS é recalculado apartir do % da Filial, isso poderá gerar problema caso o % seja alterado antes da devolução (DECODE(NVL(VW_PEDIDO.VL_TOTAITEMPEDI, 0), 0, 0, NVL((NVL((SELECT (NVL(VL_COFIZONAFRANNOTAFISC,0) + NVL(VL_PISZONAFRANNOTAFISC,0)) FROM NOTA_FISCAL, NOTA_FISCAL_ITEM, PEDIDO_VENDA_NOTA_FISCAL PVNF WHERE PVNF.ID_PEDIVEND = PVI.ID_PEDIVEND AND NOTA_FISCAL.ID_NOTAFISC = PVNF.ID_NOTAFISC AND NOTA_FISCAL.ID_NOTAFISC = NOTA_FISCAL_ITEM.ID_NOTAFISC AND NOTA_FISCAL_ITEM.ID_MATEEMBA = PVI.ID_MATEEMBA AND NOTA_FISCAL.FL_CANCNOTAFISC = 'N' AND NOTA_FISCAL.FL_ZONAFRANNOTAFISC = 'S'), 0)) * ((NVL(PVI.VL_UNITITEMPEDIVEND, 0) * NVL(PVI.QN_PESOPADREXPEITEMPEDIVEND,0)) / NVL(VW_PEDIDO.VL_TOTAITEMPEDI, 0)),0)) + ((NVL(PVI.VL_UNITITEMPEDIVEND, 0) * NVL(PVI.QN_PESOPADREXPEITEMPEDIVEND,0)) * NVL((SELECT NOTA_FISCAL_ITEM.PC_ICMSITEMNOTAFISC FROM NOTA_FISCAL, NOTA_FISCAL_ITEM, PEDIDO_VENDA_NOTA_FISCAL PVNF WHERE PVNF.ID_PEDIVEND = PVI.ID_PEDIVEND AND NOTA_FISCAL.ID_NOTAFISC = PVNF.ID_NOTAFISC AND NOTA_FISCAL.ID_NOTAFISC = NOTA_FISCAL_ITEM.ID_NOTAFISC AND NOTA_FISCAL_ITEM.ID_MATEEMBA = PVI.ID_MATEEMBA AND NOTA_FISCAL.FL_CANCNOTAFISC = 'N' AND NOTA_FISCAL.FL_ZONAFRANNOTAFISC = 'S'), 0) / 100)) AS VL_DESCZONAFRANITEM, --> DESCONTO FINANCEIRO SOBRE O ITEM (SEM VALORES DE FRETE, SEGURO, DESPESAS E ICMS ST, POIS NÃO ENTRAM NA COMISSÃO) -- (Valor do Item - Proporcional de Desconto de Zona Franca) * % Desconto Financeiro (((NVL(PVI.VL_UNITITEMPEDIVEND, 0) * NVL(PVI.QN_PESOPADREXPEITEMPEDIVEND,0)) - DECODE(NVL(VW_PEDIDO.VL_TOTAITEMPEDI, 0), 0, 0, ((NVL(PVI.VL_UNITITEMPEDIVEND, 0) * NVL(PVI.QN_PESOPADREXPEITEMPEDIVEND,0)) * (DECODE(NVL(VW_PEDIDO.VL_TOTAITEMPEDI, 0), 0, 0, NVL(NVL((SELECT (NVL(VL_COFIZONAFRANNOTAFISC,0) + NVL(VL_PISZONAFRANNOTAFISC,0)) FROM NOTA_FISCAL, NOTA_FISCAL_ITEM, PEDIDO_VENDA_NOTA_FISCAL PVNF WHERE PVNF.ID_PEDIVEND = PVI.ID_PEDIVEND AND NOTA_FISCAL.ID_NOTAFISC = PVNF.ID_NOTAFISC AND NOTA_FISCAL.ID_NOTAFISC = NOTA_FISCAL_ITEM.ID_NOTAFISC AND NOTA_FISCAL_ITEM.ID_MATEEMBA = PVI.ID_MATEEMBA AND NOTA_FISCAL.FL_CANCNOTAFISC = 'N' AND NOTA_FISCAL.FL_ZONAFRANNOTAFISC = 'S'), 0) * ((NVL(PVI.VL_UNITITEMPEDIVEND, 0) * NVL(PVI.QN_PESOPADREXPEITEMPEDIVEND,0)) / NVL(VW_PEDIDO.VL_TOTAITEMPEDI, 0)),0)) + ((NVL(PVI.VL_UNITITEMPEDIVEND, 0) * NVL(PVI.QN_PESOPADREXPEITEMPEDIVEND,0)) * NVL((SELECT NOTA_FISCAL_ITEM.PC_ICMSITEMNOTAFISC FROM NOTA_FISCAL, NOTA_FISCAL_ITEM, PEDIDO_VENDA_NOTA_FISCAL PVNF WHERE PVNF.ID_PEDIVEND = PVI.ID_PEDIVEND AND NOTA_FISCAL.ID_NOTAFISC = PVNF.ID_NOTAFISC AND NOTA_FISCAL.ID_NOTAFISC = NOTA_FISCAL_ITEM.ID_NOTAFISC AND NOTA_FISCAL_ITEM.ID_MATEEMBA = PVI.ID_MATEEMBA AND NOTA_FISCAL.FL_CANCNOTAFISC = 'N' AND NOTA_FISCAL.FL_ZONAFRANNOTAFISC = 'S'), 0) / 100)) / NVL(VW_PEDIDO.VL_TOTAITEMPEDI, 0)))) * NVL((SELECT PC_DESCFINAPEDIVEND FROM PEDIDO_VENDA WHERE ID_PEDIVEND = PVI.ID_PEDIVEND),0)/100) VL_DESCFINAITEM, --> DESCONTOS MANUAIS NO TÍTULO (BAIXA E ABATIMENTO), SEM ICMS ST (NVL(PVI.VL_UNITITEMPEDIVEND, 0) * NVL(PVI.QN_PESOPADREXPEITEMPEDIVEND,0)) - (NVL(VW_DEVOLUCAO.VL_TOTADEVOITEM,0) * NVL(PVI.VL_UNITITEMPEDIVEND, 0)), 0, 0, DECODE(NVL(VW_PEDIDO.VL_TOTAITEMPEDI, 0), 0, 0, NVL( -- DESCONTOS MANUAIS (BAIXA E ABATIMENTO) NOS TÍTULOS -- NVL((SELECT NVL(SUM((NVL(TRA.VL_ABATTITURECE, 0) + DECODE(NVL(SISTEMA_PARAMETRO.FL_DESCBAIXCOMIPARASIST, 'N'), 'N', 0, NVL(TRB.VL_DESCBAIXTITURECE,0))) - DECODE((TR.VL_TITURECE - NVL(((SELECT NVL(SUM(TRB.VL_DESCBAIXTITURECE),0) FROM TITULO_RECEBER_BAIXA TRB WHERE TRB.FL_TIPOBAIXTITURECE IS NOT NULL AND TRB.ID_TITURECE = TR.ID_TITURECE) + (SELECT NVL(SUM(TRA.VL_ABATTITURECE),0) VL_DESCABAT FROM TITULO_RECEBER_ABATIMENTO TRA WHERE TRA.FL_TIPOABATTITURECE IS NOT NULL AND TRA.ID_TITURECE = TR.ID_TITURECE)), 0)), 0, 0, ((NVL(TRA.VL_ABATTITURECE, 0) + DECODE(NVL(SISTEMA_PARAMETRO.FL_DESCBAIXCOMIPARASIST, 'N'), 'N', 0, NVL(TRB.VL_DESCBAIXTITURECE,0))) * (VW_ICMS_SUBSTITUICAO_TITULO.VL_ICMSSTTITURECE - VW_ICMS_SUBSTITUICAO_TITULO.VL_ICMSSTDEVOTITURECE)/ (TR.VL_TITURECE - NVL(((SELECT NVL(SUM(TRB.VL_DESCBAIXTITURECE),0) FROM TITULO_RECEBER_BAIXA TRB WHERE TRB.FL_TIPOBAIXTITURECE IS NOT NULL AND TRB.ID_TITURECE = TR.ID_TITURECE) + (SELECT NVL(SUM(TRA.VL_ABATTITURECE),0) VL_DESCABAT FROM TITULO_RECEBER_ABATIMENTO TRA WHERE TRA.FL_TIPOABATTITURECE IS NOT NULL AND TRA.ID_TITURECE = TR.ID_TITURECE)), 0)))) - DECODE(NVL(VW_TITULO_DESPESA.VL_BASETITU,0), 0, 0, ((NVL(TRA.VL_ABATTITURECE, 0) + DECODE(NVL(SISTEMA_PARAMETRO.FL_DESCBAIXCOMIPARASIST, 'N'), 'N', 0, NVL(TRB.VL_DESCBAIXTITURECE,0))) * (NVL(VW_TITULO_DESPESA.VL_TOTATITU,0) - NVL(VW_TITULO_DESPESA.VL_DESPFINATITU,0))/ VW_TITULO_DESPESA.VL_BASETITU))),0) VL_DESCONTO FROM TITULO_RECEBER TR LEFT JOIN TITULO_RECEBER_BAIXA TRB ON TRB.ID_TITURECE = TR.ID_TITURECE AND TRB.FL_TIPOBAIXTITURECE IS NULL LEFT JOIN TITULO_RECEBER_ABATIMENTO TRA ON TRA.ID_TITURECE = TR.ID_TITURECE AND TRA.FL_TIPOABATTITURECE IS NULL LEFT JOIN VW_TITULO_DESPESA ON VW_TITULO_DESPESA.ID_TITURECE = TR.ID_TITURECE, VW_ICMS_SUBSTITUICAO_TITULO, SISTEMA_PARAMETRO WHERE TR.ID_PEDIVEND = VW_ICMS_SUBSTITUICAO_TITULO.ID_PEDIVEND AND VW_ICMS_SUBSTITUICAO_TITULO.NR_PARCFORMPAGA = TR.NR_NUMEPARCTITURECE AND SISTEMA_PARAMETRO.EMPRESA = TR.EMPRESA AND SISTEMA_PARAMETRO.FILIAL = TR.FILIAL AND TR.ID_PEDIVEND = PVI.ID_PEDIVEND GROUP BY TR.ID_PEDIVEND),0) * (((NVL(PVI.VL_UNITITEMPEDIVEND, 0) * NVL(PVI.QN_PESOPADREXPEITEMPEDIVEND,0)) - (NVL(VW_DEVOLUCAO.VL_TOTADEVOITEM,0) * NVL(PVI.VL_UNITITEMPEDIVEND, 0))) / (NVL(VW_PEDIDO.VL_TOTAITEMPEDI, 0) - NVL((SELECT SUM((PDVI.QN_PESOITEMPEDIDEVOVEND + PDVI.QN_PESOQUEBITEMPEDIDEVOVEND) * PEDIDO_VENDA_ITEM.VL_UNITITEMPEDIVEND) VL_TOTADEVO FROM PEDIDO_DEVOLUCAO_VENDA_ITEM PDVI, PEDIDO_DEVOLUCAO_VENDA PDV, PEDIDO_VENDA_ITEM WHERE PDV.ID_PEDIVEND = PEDIDO_VENDA_ITEM.ID_PEDIVEND AND PDV.ID_PEDIDEVOVEND = PDVI.ID_PEDIDEVOVEND AND PDVI.ID_ITEMPEDIVEND = PEDIDO_VENDA_ITEM.ID_ITEMPEDIVEND AND PEDIDO_VENDA_ITEM.ID_PEDIVEND = PVI.ID_PEDIVEND AND (NVL(PDV.FL_BLOQAJUSFINAPEDIDEVOVEND, 'N') = 'S' -- CONSIDERAR APENAS DEVOLUÇÕES AJUSTADAS OU BLOQUEADAS PELO FINANCEIRO OR NVL(PDV.FL_CONFPEDIDEVOVEND, 'S') = 'N') AND PDV.FL_STATPEDIDEVOVEND = 'FE' GROUP BY PDV.ID_PEDIVEND ),0))),0)) AS VL_DESCMANUITEM
FROM PEDIDO_VENDA_ITEM PVI,
-- VALOR TOTAL DOS ITENS
(SELECT PVI.ID_PEDIVEND,
NVL(SUM(PVI.VL_UNITITEMPEDIVEND * PVI.QN_PESOPADREXPEITEMPEDIVEND),0) VL_TOTAITEMPEDI
FROM PEDIDO_VENDA_ITEM PVI
GROUP BY PVI.ID_PEDIVEND) VW_PEDIDO,— VALOR TOTAL DE DEVOLUÇÃO DO ITEM
(SELECT PDVI.ID_ITEMPEDIVEND,
SUM((PDVI.QN_PESOITEMPEDIDEVOVEND + PDVI.QN_PESOQUEBITEMPEDIDEVOVEND)) VL_TOTADEVOITEM
FROM PEDIDO_DEVOLUCAO_VENDA_ITEM PDVI,
PEDIDO_DEVOLUCAO_VENDA PDV
WHERE PDV.ID_PEDIDEVOVEND = PDVI.ID_PEDIDEVOVEND
AND (NVL(PDV.FL_BLOQAJUSFINAPEDIDEVOVEND, ‘N’) = ‘S’ — CONSIDERAR APENAS DEVOLUÇÕES AJUSTADAS OU BLOQUEADAS PELO FINANCEIRO
OR NVL(PDV.FL_CONFPEDIDEVOVEND, ‘S’) = ‘N’)
AND PDV.FL_STATPEDIDEVOVEND = ‘FE’
GROUP BY PDVI.ID_ITEMPEDIVEND ) VW_DEVOLUCAOWHERE PVI.ID_ITEMPEDIVEND = VW_DEVOLUCAO.ID_ITEMPEDIVEND (+)
AND VW_PEDIDO.ID_PEDIVEND = PVI.ID_PEDIVENDPra mim o problema é na montagem do campo VL_DESCMANUITEM
Erro apresentado ao tentar rodar o primeiro SELECT : ORA-01476: divisor is equal to zero
(8,609 sec)
27 de julho de 2010 às 5:00 pm #95245burga
ParticipanteNa segunda view aprsentada existem vários lugares onde pode ocorrr este erro.
Verifique como foram formados os campos:
- VL_TOTADEVOITEM
- VL_DESCZONAFRANITEM
- VL_DESCFINAITEM
- VL_DESCMANUITEM
Todos estes campos possuem divisões com valores NÃO fixos, então todos são grandes candidatos ao erro, sendo que VL_TOTADEVOITEM, VL_DESCZONAFRANITEM e VL_DESCFINAITEM possuem uma divisão cada um e VL_DESCMANUITEM possui três…
Com certeza o problema está aí…
27 de julho de 2010 às 5:58 pm #95246diego_aj
ParticipanteBom dia,
Nas colunas em que você usa divisão, coloca mais um decode, segue um exemplo com a coluna PC_MEDICOMIDECODE(NVL(SUM(VW_COMIITEMPEDIVEND.VL_TOTAOPER),0), 0, 0,
DECODE(NVL(SUM(VW_COMIITEMPEDIVEND.VL_TOTAOPER),0), 0, 0,
(NVL(SUM(VW_COMIITEMPEDIVEND.VL_FATOCALCCOMI),0) / NVL(SUM(VW_COMIITEMPEDIVEND.VL_TOTAOPER),0)* 100))) AS PC_MEDICOMI,Não testei, mas o que quis fazer é o seguinte:
Caso o campo que irá efetuar a divisão, no caso ser o divisor, for 0, já retorna 0, se não aii sim efetua a divisão e multiplicação consequentemente.
Pois o erro ocorre quando o campo que está dividindo é 0.Olha esse exemplo simples, da o mesmo erro:
select (5 / 0) from dual;
t++
27 de julho de 2010 às 7:01 pm #95250Anônimo
Fala burga… bem observado: pelos testes que estou realizando o problema está no campo VL_DESCMANUITEM no qual possui 3 divisões. Esse problema só ocorre quando aplico uma função para esse campo, no caso, o SUM.
Estou tentando tratar isso quando dou o SUM, utilizando o DECODE, porém sem sucesso.
Agora partirei para a VW que monta o campo e analisar as 3 divisões e tentar descobrir qual está apresentando problema.
Se tiver mais alguma idéia posta aí, assim que obtiver os resultados postarei.
Abraços.
27 de julho de 2010 às 8:21 pm #95253burga
ParticipanteNa verdade o mais aconselhado seria acertar TODAS as expressões da segunda view que possuem divisão que pode ocasionar o mesmo problema, da mesma forma que está feito na primeira view…
decode (divisor, 0, 0,expressão_para_calcular/divisor)
Como o diego_aj apresentou!
28 de julho de 2010 às 3:12 pm #95267Anônimo
[quote=”burga”:33uu2kkd]Na verdade o mais aconselhado seria acertar TODAS as expressões da segunda view que possuem divisão que pode ocasionar o mesmo problema, da mesma forma que está feito na primeira view…
decode (divisor, 0, 0,expressão_para_calcular/divisor)
Como o diego_aj apresentou![/quote]
Bom dia galera, gostaria de agradecer a colaboração dos parceiros burga e diego_aj na resolução deste problema com divisão por zero.
Realemente faltaram alguns decodes no divisores de algumas expressões.Obrigado a todos e problema resolvido!
-
AutorPosts
- Você deve fazer login para responder a este tópico.