Oracle Apex:聚合显示为顶行
Oracle Apex: Aggregate show as top row
目前我使用的是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
问题是总计可能会或可能不会呈现在页面上,具体取决于页面大小和结果集中的记录数 - 因此对于交互式报表,除非您强制它始终显示所有记录, 页面甚至可能无法使用 JS 技巧将摘要行移动到顶部。
在这种情况下,我的偏好是根据简单的 SQL 查询向页面添加一个单独的区域。它将显示在交互式报告上方。不幸的是,这些列不会对齐。
我找到了解决方案
- 添加子查询计算总和
- 与现有结果合并
- 使用高亮功能补新行
这可以使用 JavaScript/jQuery 来完成(当然这只是许多方法中的一种,但它确实有效)。
用于创建报告的 SQL 语句以及所有过滤器和搜索信息存储在
WWV_FLOW_WORKSHEETtables
创建一个数据库包以生成 SQL 并将您想要的列和 return 相加为 XML。
从 jQuery AJAX 调用中调用该数据库包,然后解析 XML 并使用 jQuery 在顶部添加一行(如果你愿意,可以在底部添加一行)工作表 table 并将结果放在那里。
应该从相关工作表的刷新后动态操作调用 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 等)
下面 link 中的示例。
http://apps.htmldb.com/apps/f?p=htmldb:knowledgebase:::NO:RP:P5_ID:84315
目前我使用的是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
问题是总计可能会或可能不会呈现在页面上,具体取决于页面大小和结果集中的记录数 - 因此对于交互式报表,除非您强制它始终显示所有记录, 页面甚至可能无法使用 JS 技巧将摘要行移动到顶部。
在这种情况下,我的偏好是根据简单的 SQL 查询向页面添加一个单独的区域。它将显示在交互式报告上方。不幸的是,这些列不会对齐。
我找到了解决方案
- 添加子查询计算总和
- 与现有结果合并
- 使用高亮功能补新行
这可以使用 JavaScript/jQuery 来完成(当然这只是许多方法中的一种,但它确实有效)。
用于创建报告的 SQL 语句以及所有过滤器和搜索信息存储在 WWV_FLOW_WORKSHEETtables
创建一个数据库包以生成 SQL 并将您想要的列和 return 相加为 XML。
从 jQuery AJAX 调用中调用该数据库包,然后解析 XML 并使用 jQuery 在顶部添加一行(如果你愿意,可以在底部添加一行)工作表 table 并将结果放在那里。
应该从相关工作表的刷新后动态操作调用 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 等)
下面 link 中的示例。
http://apps.htmldb.com/apps/f?p=htmldb:knowledgebase:::NO:RP:P5_ID:84315