具有子查询的透视导致表格格式

时间:2015-01-06 14:36:10

标签: oracle pivot

考虑下面的表结构,

create table test_pivot (
  id number,
  value number
);

insert into test_pivot values(1, 100);
insert into test_pivot values(2, 200);
insert into test_pivot values(3, 300);
insert into test_pivot values(4, 400);
insert into test_pivot values(5, 500);
insert into test_pivot values(6, 600);

我可以编写一个PIVOT查询来将列转换为标题。

select *
  from test_pivot pivot(sum(value) as val_ for(id) in(1, 2, 3, 4, 5));

这将给我一个如下所示的输出,

1_VAL_  2_VAL_  3_VAL_  4_VAL_  5_VAL_
100     200     300     400     500

现在,我不想对pivot子句中的值进行硬编码,但我想使用子查询。所以我尝试了这个,

select *
  from test_pivot pivot XML (sum(value) as val_ for(id) in(select id from test_pivot where id = 2));

我运行时获得的结果是,

<PivotSet><item><column name = "ID">2</column><column name = "VAL_">200</column></item></PivotSet>

由于oracle中的PIVOT强制我们在查询中放置XML以使用子查询,因此结果是XML格式。有没有办法将此结果转换为表格格式?

0 个答案:

没有答案