我有一个显示价值标签和百分比的仪表图表.它基于返回VALUE和MAX_VALUE的查询.在某些情况下,查询返回0作为MAX_VALUE,然后图表显示消息“无效数据”.我相信这是因为除以零而发生的.如何防止显示此消息并返回0作为VALUE和MAX_VALUE以及0%?
SELECT NUM_Failed VALUE,TOTAL_NUM MAX_VALUE FROM ( SELECT ( SELECT COUNT(*) FROM (select t1.name,t1.run_id from Table1 t1 LEFT JOIN Table2 t2 ON t1.ID=t2.ID WHERE t1.START_DATE > SYSDATE - 1 GROUP BY t1.name,t1.run_id) ) AS TOTAL_NUM,( SELECT COUNT(*) FROM (select name,run_id from Table1 t1 LEFT JOIN Tabe2 t2 ON t1.ID=t2.ID where t1.run_id IN (SELECT run_id FROM Table1 where err_code > 0) AND t1.START_DATE > SYSDATE - 1 GROUP BY t1.name,t1.run_id) ) as NUM_Failed FROM dual)
解决方法
感谢您发布查询.
如果你想避免0,那么DECODE怎么样?
SELECT decode(NUM_Failed,1E99,NUM_Failed) VALUE,decode(TOTAL_NUM,TOTAL_NUM ) MAX_VALUE FROM (the rest of your query goes here)
你没有说明事后发生了什么(即究竟是什么导致除零 – 是NUM_Failed还是TOTAL_NUM)?这个想法是:除了除以零,除以一个非常大的值(例如1E99),你会得到一个非常小的数字,例如:
sql> select 24/1E99 from dual; 24/1E99 ---------- 2,4000E-98 sql>
实际上是零.看看你是否可以用这种方法做点什么.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。