0

我有两个 Oracle 查询。我想将这些查询合并为一个。第一个查询总是给出一条记录作为结果。

1)。

select distinct partition_name 
from all_tab_partitions 
where partition_name like 'P_20130110%';

2)。

select feed_id,count(*) 
from str_bill_item partition(result of first query) 
group by feed_id 
order by 1;

实际上 str_bill_item 表有一些存储数据的分区。该分区的名称和名称存储在 all_tab_partition 表中。所以我需要从 all_tab_partition 中获取特定的分区名称,然后在该分区表格 str_billl_item 表中找到数据。

请帮我解决这个问题?

谢谢。

4

1 回答 1

0

啊,我看到问题是您不能在 partition() 中使用查询

像这样的东西怎么样:

DECLARE
  rPartName VARCHAR2(100);
BEGIN

  select distinct partition_name 
  INTO rPartName
  from all_tab_partitions 
  where partition_name like 'P_20130110%';

EXECUTE IMMEDIATE 'select feed_id,count(*)  from str_bill_item partition('|| rPartName ||') group by feed_id order by 1;';

end;

你可以尝试的是:

运行选择而不执行和使用

DBMS_OUTPUT.PUT_LINE('select feed_id,count(*)  from str_bill_item partition('|| rPartName ||') group by feed_id order by 1;');

如果您遇到相同的错误,则将输出作为 select 运行,它位于 sql 查询中的某处

如果不执行有问题。

于 2013-01-10T12:31:02.450 回答