除数等于零,需要有案例说明的指导

时间:2019-04-17 08:46:29

标签: oracle plsql

这是我的查询,并且我得到的错误除数等于零,我知道我需要将其构建为一个case语句,只是尝试了一些操作而无法使其正常工作,谢谢。

NVL(ROUND(((SELECT PC.BUCKET_ACCUM_COST                                          
FROM   PART_CB PC                                                    WHERE  
PART_CB_NO = '201'                                                                          
AND PC.PART_NO = I.PART_NO
                                                                AND 
PC.CONTRACT = P.CONTRACT
                                                                AND 
PC.TOP_LEVEL_PART_NO || '' =

Z_BEL_FINANCE_API.GET_PART_COST_TOP_PART_NO(P.CONTRACT, P.PART_NO, 
P.COST_SET, P.ALTERNATIVE_NO,

P.ROUTING_ALTERNATIVE_NO)
                                                                AND 
PC.COST_SET = P.COST_SET
                                                                AND 
PC.COST_BUCKET_ID != 'SYS'
                                                                AND 
PC.TOP_ALTERNATIVE_NO =

Z_BEL_FINANCE_API.GET_PART_COST_TOP_ALT_NO(P.CONTRACT, P.PART_NO, 
P.COST_SET, P.ALTERNATIVE_NO,

P.ROUTING_ALTERNATIVE_NO)
                                                                AND

PC.TOP_ROUTING_NO = 
Z_BEL_FINANCE_API.GET_PART_COST_TOP_ROUTING_NO(P.CONTRACT, P.PART_NO, 
P.COST_SET, P.ALTERNATIVE_NO,

P.ROUTING_ALTERNATIVE_NO)
                                                                AND

PC.BUCKET_SEQ = Z_BEL_FINANCE_API.GET_PART_COST_BUCKET_SEQ(P.CONTRACT, 
P.PART_NO, P.COST_SET, P.ALTERNATIVE_NO,

P.ROUTING_ALTERNATIVE_NO)) /
                                             (SELECT WC_RATE
                                                 FROM   WCT
                                                 WHERE  WORK_CENTER_NO = 'COST1'
                                                                AND COST_SET = '1'
                                                                AND CONTRACT = P.CONTRACT)), 4), 0) MACHINE_SETUP_TIME,

1 个答案:

答案 0 :(得分:1)

混乱中唯一的区别是:

/ (SELECT WC_RATE FROM WCT ...)

如果不想除以零,则必须处理。

例如,使用DECODE(或CASE),以及-如果要获得0,则除以很大的数字(例如1E99)