2010-02-26 22 views
2

这是一个后续问题Transpose one row into many rows Oracle有无UNPIVOT自动抓取列的列表(的Oracle 11g)

我希望能够逆转置任意的查询结果。

手动UNPIVOT的表,我会做:

select value_type, value from (
(
    -- query to be unpivoted 
    -- EG: select col1, col2, col3, col4, col5 from table 
) 
unpivot 
(
    -- Line I would like to change 
    value for value_type in (col1, col2, col3, col4, col5) 
) 
); 

这适用于返回5列的所有查询,叫col1, col2,等有什么我放的,而不是value for value_type in (col1, col2, col3, col4, col5),将抓住所有的在第一部分中选择的查询/视图/表中的列名?

回答

2

您可以通过动态创建SQL语句作为字符串,然后使用execute immediate来执行它并返回一个游标,从而在PL/SQL中创建一个存储过程。

+1

下面是代码的详细答案:http://stackoverflow.com/questions/15100101/unpivot-on-an-indeterminate-number-of-columns – Vadzim 2015-01-14 14:44:03