我遇到了一个问题,我想将表的列名转换为行值,并将这些列名与这些列所属的表的数据组合在一起。
我的数据表如下:
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
到目前为止,我已搜索过网络,但没有任何示例与我的问题相对应。
我使用union开发了一个select语句。但它并没有给我我想要的结果。请帮忙。
答案 0 :(得分:1)
假设您只想要列中至少有一个值的列名,可以使用unpivot
:
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'));