在查询中使用带有 sum 函数的选择列表的返回值

问题描述 投票:0回答:1

我正在使用 Oracle Database 19c 企业版版本 19.0.0.0.0 - 生产 版本 19.22.0.0.0,产品版本 20.1.0.00.13

我有一个名为 P2_METRIC_NAME 的选择列表。 它是表中的字段列表。 我想在图表的选择列表中的求和函数中使用它。 所以,它会是:

select null link, 
to_char(dwh_xdate, 'Mon YYYY'), 
sum(&P2_METRIC_NAME.)
from core_performance_output_t
where dwh_xdate >= :p0_date
group by dwh_xdate
order by dwh_xdate

因此,如果用户从选择列表中选择“NET_OUTSTANDINGS”,则查询应解释为:

select null link,
to_char(dwh_xdate, 'Mon YYYY'),
sum(NET_OUTSTANDINGS)
from core_performance_output_t
where dwh_xdate >= :p0_date
group by dwh_xdate
order by dwh_xdate

我尝试过使用&P2_METRIC_NAME。和:P2_METRIC_NAME。 附件是我使用“SUM(&P2_METRIC_NAME)”时遇到的错误。 我觉得我在这个错误上走在正确的轨道上,但不太确定下一步要尝试什么。

enter image description here

还有一点可能相关或不相关的信息::P2_METRIC_NAME 的选择列表是一个查询:

select column_name d, column_name r
from all_tab_columns 
where table_name = 'CORE_PERFORMANCE_OUTPUT_T'
and column_name not in ('METRIC','METRIC_NAME','DWH_XDATE')
group by column_name
order by 1
oracle-sqldeveloper oracle-apex
1个回答
0
投票

这是一个基于 Scott 示例模式(其

emp
表)的简单示例。

我创建了名为

P2_COLUMN
的选择列表页面项目,它显示
emp
表中的列。当值更改时它会提交页面。

然后,我创建了一个存储函数,它返回代表图表源的查询:

create or replace function f_col (par_column in varchar2) return varchar2 is
  retval varchar2(1000);
begin
  retval := 'select deptno, sum(&P2_COLUMN.) val from emp group by deptno';
  return retval;
end;
/

图表区域的来源是返回 SQL 查询的函数体:

return f_col(':P2_COLUMN');

结果是 - 对于两个样本列:

enter image description here

我觉得还不错。


如果你问

为什么我不直接在 Apex 中返回该查询,即使用这个:

   return 'select deptno, sum(&P2_COLUMN.) val from emp group by deptno';

作为区域来源

答案是:因为你会得到

ORA-20999:解析返回的查询结果为“ORA-20999:无法解析 SQL 查询!ORA-06550:第 4 行,第 4 列:ORA-00909:参数数量无效”。

错误。为什么?不知道,我没那么聪明。

© www.soinside.com 2019 - 2024. All rights reserved.