ISREL LOUIS RAMOS 0 Denunciar post Postado Outubro 20, 2016 Boa tarde, criei a seguinte query: select b.data, a.desc_grupo AS GRUPO, a.desc_variavel AS INDICADOR, b.vl_dia AS DIA_PREV, nvl(c.vl_dia, 0) + nvl(d.vl_dia, 0) AS DIA_REALIZ, b.vl_mes AS MES_PREV, nvl(c.vl_mes, 0) + nvl(d.vl_mes, 0) AS MES_REALIZ, b.vl_ANO AS ACUM_PREV, nvl(c.vl_ANO, 0) + nvl(d.vl_ANO, 0) AS ACUM_REALIZ from PIMSPRD.tbita_bi_indicadores a inner join pimsprd.tbita_bi_indicPREV b on b.indicador = a.indicador left join pimsprd.tbita_bi_indicREALIZ c on c.data = b.data and c.indicador = a.indicador left join pimsprd.tbita_bi_indicREALIZ_MANUAL d on d.data = b.data and d.indicador = a.indicador WHERE B.DATA = TO_DATE(SYSDATE - 1, 'DD/MM/YYYY') order by C.DATA, A.GRUPO, A.ORDEM_SEQ Ai surgiu a necessidade de efetuar o calculo da variação entre o DIA_PREV e DIA_REALIZ, adicionei o seguinte campo ( esta comentado): b.vl_dia AS DIA_PREV, nvl(c.vl_dia, 0) + nvl(d.vl_dia, 0) AS DIA_REALIZ, -- ((nvl(c.vl_dia, 0) + nvl(d.vl_dia, 0)/ b.vl_dia)*100), Porém acontece que alguns indicadores previstos são com o valor 0 e alguns realizados são 0 também, ou seja, fazendo esse comando direto aparece a mensagem: divisor is equal to zero, alguém sabe alguma operação ou maneira diferente que eu possa estar fazendo? Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Outubro 20, 2016 faço assim (case when b.vl_dia <> 0 then ((nvl(c.vl_dia, 0) + nvl(d.vl_dia, 0)/ b.vl_dia)*100) else null end) Compartilhar este post Link para o post Compartilhar em outros sites
ISREL LOUIS RAMOS 0 Denunciar post Postado Outubro 21, 2016 Deu 100%, valeu grande Motta. Abraços. Compartilhar este post Link para o post Compartilhar em outros sites
ISREL LOUIS RAMOS 0 Denunciar post Postado Outubro 21, 2016 Deu certo, valeu grande Motta. Abraços Compartilhar este post Link para o post Compartilhar em outros sites