執行SQL時 報錯 ORA-01476:divisor is equal to zero 的解決方法

feelpurple發表於2015-11-06
這個報錯,是因為除數為0,可以將除數轉換成非零的整數值

如下面SQL中的紅色部分

with tmp as
 (select  paycode, transtate, count(1) cnt_1
    from elmp_trans_orderinfo
   where createtime >= sysdate- 1 / (24 * 12)
     and
   trantype = 1
   group by paycode, transtate)
select channel,case when cnt like '%.%' then to_char(cnt)||'%' else to_char(cnt) end cnt from 
(select 'CMB_SUCCESS' channel, nvl(max(case when paycode = '1308' and transtate = 0 then cnt_1 end), 0) cnt
  from tmp
union all
select 'CMB_TBD', nvl(max(case when paycode = '1308' and transtate = 2 then cnt_1 end), 0) cnt
  from tmp
union all
select 'CMB_FAIL', nvl(max(case when paycode = '1308' and transtate = 1 then cnt_1 end), 0) cnt
  from tmp
union all
select 'CMB_SUCCESS_RATIO', round(nvl(max(case when paycode = '1308' and transtate = 0 then cnt_1 end), 0) * 100 / 
decode((nvl(max(case when paycode = '1308' and transtate = 0 then cnt_1 end), 0) + nvl(max(case when paycode = '1308' and transtate = 2 then 
cnt_1 end), 0) + nvl(max(case when paycode = '1308' and transtate = 1 then cnt_1 end), 0)),0,1), 2)
  from tmp
);

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26506993/viewspace-1824320/,如需轉載,請註明出處,否則將追究法律責任。

相關文章