如何在此查詢的周圍包裝DECODE以處理零除數而不計算分母總和兩次?我不想返回thedate
以外的任何值和四捨五入的百分比。Oracle除數等於零
SELECT thedate, ROUND (100*
SUM(case when TRUNC(ACTIVITY_END_DATE) <= thedate
AND TRUNC(ACTIVITY_END_DATE) >= add_months(trunc(thedate,'mm'), -12)
AND trunc(ACTIVITY_END_DATE) <= trunc(ACTIVITY_NEED_DATE)
AND SYSDATE >= trunc(thedate,'mm') then 1 else 0 end)
/
SUM(case when TRUNC(ACTIVITY_END_DATE) <= thedate
AND TRUNC(ACTIVITY_END_DATE) >= add_months(trunc(thedate,'mm'), -12)
AND SYSDATE >= trunc(thedate,'mm') then 1 else 0 end)) as OTR12
FROM TEST
cross join ( select add_months(last_day(SYSDATE), level-7) as thedate
from dual connect by level <= 12 )
GROUP BY thedate
ORDER BY thedate
這似乎與解碼,我不得不做分母總和的兩倍
DECODE(denominator_summation,0,NULL, numerator_summation/denominator_summation)
子查詢工作,我接受它作爲答案。我只注意到第三個答案。看起來他們都工作。 – jeff 2013-04-03 22:34:34