Oracle Apex:Aggregate显示为第一行

时间:2015-10-02 08:10:53

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

目前我使用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

3 个答案:

答案 0 :(得分: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是一个以冒号分隔的列总计

你甚至可以获得更多的幻想,并添加不同的agregates(即AVG,MIN,MAX等)。

以下链接中的示例。

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

我找到了解决方案

  1. 添加子查询以计算总和
  2. 与现有结果联盟
  3. 使用突出显示功能构成新行