结果不为0,但ORA-01476除数等于零-SQL

时间:2018-08-17 19:17:36

标签: zero

当我说:

    NVL(OSS_REALIZADAS_MEN.NUMERO_DE_OS  * 1,0) +
     NVL(OSS_REALIZADAS_BIM.NUMERO_DE_OS  * 2,0) +
     NVL(OSS_REALIZADAS_TRI.NUMERO_DE_OS  * 2,0) + NVL(OSS_REALIZADAS_SEM.NUMERO_DE_OS  * 3,0) +
     NVL(OSS_REALIZADAS_ANU.NUMERO_DE_OS  * 5,0) as Realizadas_Tot, 

    NVL(OSS_PROGRAMADAS_MEN.NUMERO_DE_OS  * 1,0) +
  NVL(OSS_PROGRAMADAS_BIM.NUMERO_DE_OS  * 2,0) +
 NVL(OSS_PROGRAMADAS_TRI.NUMERO_DE_OS  * 2,0) +
 NVL(OSS_PROGRAMADAS_SEM.NUMERO_DE_OS  * 3,0) +
 NVL(OSS_PROGRAMADAS_ANU.NUMERO_DE_OS  * 5,0) as Programadas_Tot

然后Programadas_Tot和Realizadas_Tot带给我一些整数。 但需要将它们分开:

     (
        NVL(OSS_REALIZADAS_MEN.NUMERO_DE_OS  * 1,0) +
        NVL(OSS_REALIZADAS_BIM.NUMERO_DE_OS  * 2,0) + 
    NVL(OSS_REALIZADAS_TRI.NUMERO_DE_OS  * 2,0) + 
    NVL(OSS_REALIZADAS_SEM.NUMERO_DE_OS  * 3,0) + 
    NVL(OSS_REALIZADAS_ANU.NUMERO_DE_OS  * 5,0)

        )
                         /
        (
        NVL(OSS_PROGRAMADAS_MEN.NUMERO_DE_OS  * 1,0) +
  NVL(OSS_PROGRAMADAS_BIM.NUMERO_DE_OS  * 2,0) +
 NVL(OSS_PROGRAMADAS_TRI.NUMERO_DE_OS  * 2,0) +
 NVL(OSS_PROGRAMADAS_SEM.NUMERO_DE_OS  * 3,0) +
 NVL(OSS_PROGRAMADAS_ANU.NUMERO_DE_OS  * 5,0)
        )     


                      as APPtot

但是它显示了错误“ ORA-01476除数等于零”。 我读了很多有关解码和大小写的信息,但我认为这并不是我想做的。 我对NVL和NVL2进行了很多尝试,但这使我一直在说。 已经谢谢了!

1 个答案:

答案 0 :(得分:0)

对于那些可能遇到与我相同的问题的人,这是我的解决方案:

    NVL(  
           NULLIF(
                NVL(OSS_REALIZADAS_MEN.NUMERO_DE_OS  * 1,0) + 
                NVL(OSS_REALIZADAS_BIM.NUMERO_DE_OS  * 2,0) + 
                NVL(OSS_REALIZADAS_TRI.NUMERO_DE_OS  * 2,0) + 
                NVL(OSS_REALIZADAS_SEM.NUMERO_DE_OS  * 3,0) + 
                NVL(OSS_REALIZADAS_ANU.NUMERO_DE_OS  * 5,0)
                ,0)  
                /    
           NULLIF(
                NVL(OSS_PROGRAMADAS_MEN.NUMERO_DE_OS  * 1,0) +  
                NVL(OSS_PROGRAMADAS_BIM.NUMERO_DE_OS  * 2,0) + 
                NVL(OSS_PROGRAMADAS_TRI.NUMERO_DE_OS  * 2,0) + 
                NVL(OSS_PROGRAMADAS_SEM.NUMERO_DE_OS  * 3,0) + 
                NVL(OSS_PROGRAMADAS_ANU.NUMERO_DE_OS  * 5,0),0)
                ,0) 
                * 100 AS APP