小编use*_*292的帖子

如何使用动态列进行逆透视 Oracle

我需要解开一个我无法控制列的表,所以我需要动态获取列名:这就是我所拥有的

CREATE TABLE test
(
 PK VARCHAR2(255 CHAR),
COL1                VARCHAR2(255 CHAR),
COL2              VARCHAR2(255 CHAR),
COL3            VARCHAR2(255 CHAR),
COL4              VARCHAR2(255 CHAR),
COL5             VARCHAR2(255 CHAR),
COL6            NUMBER,

)

    declare
      sql_stmt     clob;
      pivot_clause clob;
    begin
      select listagg('''' || column_name || ''' as "' || column_name || '"', ',') within group (order by column_name) 
      into   pivot_clause
    FROM USER_TAB_COLUMNS
    WHERE table_name = 'test');



      sql_stmt := 'SELECT PK,

    VarName,
    Valuer,
    Max(timestamp) over (Partition by PK) as timestamp,

    FROM   test
    UNPIVOT(Valuer FOR VarName IN (' || pivot_clause …
Run Code Online (Sandbox Code Playgroud)

oracle unpivot dynamic-sql

2
推荐指数
1
解决办法
3091
查看次数

标签 统计

dynamic-sql ×1

oracle ×1

unpivot ×1