1

这是我的代码来做我想做的一部分:

SELECT uID, ColumnName, ColumnResult
FROM table
UNPIVOT
(
ColumnResult
for ColumnName in (COL1,COL2,COL3)
 )u

这将返回如下内容:

谢谢

4

2 回答 2

1

您可以使用以下查询将列名替换为新值:

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;

请参阅带有演示的 SQL Fiddle

于 2013-04-30T20:34:32.860 回答
1

可以更好地扩展案例的替代方案:

'column'||regexp_replace(to_char(to_date(substr(ColumnName,4),'J'),'Jsp'),'[ -]','') ColumnName, 

这适用于数百个。

于 2013-04-30T21:23:19.320 回答