将两个查询合并为一个用于分区

时间:2013-01-10 11:40:52

标签: sql oracle

我有两个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表中的数据。

请帮助我吗?

感谢。

1 个答案:

答案 0 :(得分: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;

你可以尝试的是:

运行select而不执行并使用

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

如果在sql查询

中出现相同的错误,则将输出作为select运行

如果不执行则有问题。