2013-04-30 144 views
1

这是我的代码做什么,我想要做的部分:SQL case语句更改值

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

这将返回是这样的:

感谢

回答

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 with Demo

+0

非常感谢! – user2213892 2013-04-30 20:48:17

1

的情况下的替代方案,可能会延长更好:

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

这个工程到数百人。