代码之家  ›  专栏  ›  技术社区  ›  David Oneill

使unpivot自动获取列列表(Oracle 11g)

  •  2
  • David Oneill  · 技术社区  · 15 年前

    这是后续问题 Transpose one row into many rows 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) 这将从第一部分中选择的查询/视图/表中获取所有列名?

    1 回复  |  直到 15 年前
        1
  •  2
  •   Doug Porter    15 年前

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