这是我的代码来做我想做的一部分:
SELECT uID, ColumnName, ColumnResult
FROM table
UNPIVOT
(
ColumnResult
for ColumnName in (COL1,COL2,COL3)
)u
这将返回如下内容:
谢谢
您可以使用以下查询将列名替换为新值:
select uID,
case ColumnName
when 'COL1' then 'columnOne'
when 'COL2' then 'columnTwo'
when 'COL3' then 'columnThree'
end ColumnName,
ColumnResult
from TABLE
unpivot
(
ColumnResult
for ColumnName in (COL1,COL2,COL3)
)u;
可以更好地扩展案例的替代方案:
'column'||regexp_replace(to_char(to_date(substr(ColumnName,4),'J'),'Jsp'),'[ -]','') ColumnName,
这适用于数百个。