2

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

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

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

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

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

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

3 回答 3

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

于 2016-04-13T18:30:29.173 回答
0

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

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

于 2015-10-06T07:30:18.300 回答
0

我找到了解决方案

  1. 添加子查询以计算总和
  2. 与现有结果的联合
  3. 使用高亮功能组成新行
于 2015-10-07T03:39:26.873 回答