【问题标题】:Oracle APEX chart - Invalid data is displayedOracle APEX 图表 - 显示无效数据
【发布时间】:2018-11-29 19:19:45
【问题描述】:

我有一个显示值标签和百分比的仪表图。它基于返回 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 时会出现问题
  • 您好,我建议您在apex中发布一些与图表相关的问题时,使用标签“oracle-jet”。也许你会在那里找到知道如何在 apex 上自定义这些图表的人。在这种情况下,我会使用 decode 来解决这个问题。祝你好运。

标签: oracle-apex-5.1


【解决方案1】:

感谢您发布查询。

如果你想避免结果为 0,DECODE 怎么样?

SELECT decode(NUM_FAILED, 0, 1E99, NUM_FAILED) VALUE,
       decode(TOTAL_NUM , 0, 1E99, 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>

实际上是。看看你能不能用这种方法做点什么。

【讨论】:

  • 我之前尝试过解码,将 0 替换为 1,但这不是一个非常优雅的解决方案:( TOTAL_NUm 是导致问题的原因,因为它是除以 0
  • 我希望有更好的解决方案,内置在 APEX 中
  • 也许有,但我不知道。不过,其他人可能会。
  • 感谢您的帮助。我束手无策,试图弄清楚:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-11
  • 2018-08-10
  • 1970-01-01
  • 1970-01-01
  • 2022-08-23
  • 2022-01-08
相关资源
最近更新 更多