Oracle11g 在oracle中将列名转换为行值

Oracle11g 在oracle中将列名转换为行值,oracle11g,Oracle11g,我遇到了一个问题,我想将表的列名转换为行值,并将这些列名与这些列所属的表的数据相结合 我的数据表如下: ID|QUERY_REF|COL_V1|COL_V2|COL_V3|COL_V4|COL_V5|COL_V6 1|Q127|hdaskjdhakdjsadj asudakjdakhdkjjdjkskjdjsakhasuygwyeqe1747434834094432uilknfja||||| 期望输出 ID|QUERY_REF|COLUMNS 1|Q127|COL_V1 1|Q127|COL_

我遇到了一个问题,我想将表的列名转换为行值,并将这些列名与这些列所属的表的数据相结合

我的数据表如下:

ID|QUERY_REF|COL_V1|COL_V2|COL_V3|COL_V4|COL_V5|COL_V6
1|Q127|hdaskjdhakdjsadj asudakjdakhdkjjdjkskjdjsakhasuygwyeqe1747434834094432uilknfja|||||
期望输出

ID|QUERY_REF|COLUMNS
1|Q127|COL_V1
1|Q127|COL_V2
1|Q127|COL_V3
1|Q127|COL_V4
1|Q127|COL_V5
1|Q127|COL_V6
到目前为止,我已经搜索了web,但没有一个例子与我的问题对应


我使用union开发了一个select语句。但这并没有给我想要的结果。请提供帮助。

假设您只需要列中至少有一个值的列名,您可以使用:

select distinct ID, QUERY_REF, COLUMNS 
from tableName
UNPIVOT (cols FOR COLUMNS IN (COL_V1 AS 'COL_V1', COL_V2 AS 'COL_V2', COL_V3 AS 'COL_V3', COL_V4 AS 'COL_V4', COL_V5 AS 'COL_V5', COL_V6 AS 'COL_V6'));