2

这是将一行转换为多行 Oracle的后续问题

我希望能够对任意查询结果进行反透视。

要手动取消透视表,我会这样做:

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)是否会从第一部分中选择的查询/视图/表中获取所有列名?

4

1 回答 1

2

您可以在 PL/SQL 中创建一个存储过程来执行此操作,方法是动态地将您的 SQL 语句创建为字符串,然后使用execute immediate它来执行它并返回一个游标。

于 2010-02-27T23:48:22.207 回答