Pular para o conteúdo
Visualizando 8 posts - 1 até 8 (de 8 do total)
  • Autor
    Posts
  • #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?

      #95239
      burga
      Participante

        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…

        #95244
        Anô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_DEVOLUCAO

          WHERE PVI.ID_ITEMPEDIVEND = VW_DEVOLUCAO.ID_ITEMPEDIVEND (+)
          AND VW_PEDIDO.ID_PEDIVEND = PVI.ID_PEDIVEND

          Pra 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)

          #95245
          burga
          Participante

            Na 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í…

            #95246
            diego_aj
            Participante

              Bom dia,
              Nas colunas em que você usa divisão, coloca mais um decode, segue um exemplo com a coluna PC_MEDICOMI

              DECODE(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++

              #95250
              Anô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.

                #95253
                burga
                Participante

                  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!

                  #95267
                  Anô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!

                  Visualizando 8 posts - 1 até 8 (de 8 do total)
                  • Você deve fazer login para responder a este tópico.
                  plugins premium WordPress