【问题标题】:Oracle Apex: Aggregate show as top rowOracle Apex:聚合显示为顶行
【发布时间】:2015-10-02 08:10:52
【问题描述】:

目前我使用 Oracle Apex 的交互式报告

    Column1    Column2
A1     1          2
A2     2          3
A3     3          4
A4     4          5
----------------------
       10         14

显示数据后,我使用交互式报表的聚合函数SUM进行了一些计算,例如对Column1,Column2求和

但结果显示为报告的最后一行,所以我必须滚动查看结果

如何将结果显示为报告的第一行

    Column1    Column2
       10         14
----------------------
A1     1          2
A2     2          3
A3     3          4
A4     4          5

【问题讨论】:

  • 嗨,我能问一下总和是否是报告行的一部分吗?你是如何在 apex 5 中做到的?谢谢
  • 点击操作 > 格式 > 聚合。之后选择总和和列来求和
  • 你知道如何使用javascript吗?如果你这样做,我会为你提供解决方案
  • @vance:是的,我可以使用 javascript。你的解决方案怎么样?
  • 对不起@kenNguyen,我认为它的工作。我在报告顶部添加了一个空行,然后通过 DOM 操作将总计放在该顶部行。它起初工作,但现在一切都搞砸了!我刚刚添加的顶行现在位于底行:(

标签: oracle oracle-apex oracle-apex-5


【解决方案1】:

这可以使用 JavaScript/jQuery 完成(当然,这只是可以完成的众多方法之一,但它确实有效)。

用于创建报告的 SQL 语句以及所有过滤器和搜索信息存储在 WWV_FLOW_WORKSHEET 表

创建一个数据库包以生成该 SQL 并将您想要的列求和并以 XML 形式返回。

从 jQuery AJAX 调用中调用该数据库包,然后解析 XML 并使用 jQuery 在工作表的顶部(和底部,如果您愿意)添加一行并将结果放在那里。

应从相关工作表的刷新后动态操作中调用 JavaScript/jQuery 函数。

function htmldbIRTotals(worksheet,columnList) {
    sessionId   = $("#pInstance").val();
    worksheetId = $(worksheet.triggeringElement).find(".a-IRR-table:last").attr("id");
    baseReportId=parseInt("0"+$("#"+worksheetId+"_rpt_saved_reports").val());

    u="'||pkg||'.getTotals?p_worksheet_id="+worksheetId+"&p_base_Report_Id="+baseReportId+"&p_session_id="+sessionId+"&p_columns="+columnList;

    $.post(u,function(data) {
        var xml = $.parseXML(data);
    });         

使用 sessionId、worksheetId 和 baseReportId,您可以检索您需要的所有信息

columnList 是一个冒号分隔的列表,包含要总计的列

您甚至可以更花哨并添加不同的聚合(即 AVG、MIN、MAX 等)

以下链接中的示例。

http://apps.htmldb.com/apps/f?p=htmldb:knowledgebase:::NO:RP:P5_ID:84315

【讨论】:

  • 这句话中缺少一些东西:JavaScript/jQuery 函数应该从相关工作表的刷新后动态操作中调用。
【解决方案2】:

问题在于,总数可能会或可能不会呈现在页面上,具体取决于页面大小和结果集中的记录数 - 因此,对于交互式报表,除非您强制它始终显示所有记录,否则页面甚至可能无法使用 JS 技巧将摘要行移到顶部。

在这种情况下,我的偏好是基于简单的 SQL 查询向页面添加一个单独的区域。它将显示在交互式报告的上方。不幸的是,这些列不会对齐。

【讨论】:

    【解决方案3】:

    我找到了解决办法

    1. 添加子查询计算总和
    2. 与现有结果的联合
    3. 使用高亮功能补新行

    【讨论】:

    • 你能说得更清楚些吗?你是怎么工会的?刚刚更新了查询? “突出显示功能”是什么意思?你能加一张图片看看它的样子吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    • 2021-06-02
    • 2021-09-07
    • 2018-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多