2014-09-25 33 views
0

如何使用plsql將數據從標題級別轉換爲行級別?將數據從標題級別轉換爲行級別

假設我有如下表:

Project | Code1 | Code2 | Code3 
     1 | a | b | c 
     2 | a | d | 

我如何分割代碼列,它們組合成一列(見下文):

Project | Code 
     1 | a 
     1 | b 
     1 | c 
     2 | a 
     2 | d 

我試過「UNION ALL 「但查詢花了很長時間。也許我做錯了。

+0

你使用的是什麼版本的Oracle? – 2014-09-25 20:02:30

+0

@NicholasKrasnov版本11g – Futochan 2014-09-25 20:05:19

+0

由於您使用的是11g版本的RDBMS,因此您可以使用'unpivot'運算符。 [這裏是一個例子](http://sqlfiddle.com/#!4/fddc9/1) – 2014-09-25 20:08:55

回答

2

您可以使用此命令unpivot

select project, codevalue 
from yourtable 
unpivot (codevalue 
     for code in (code1, code2, code3) 
) 
+0

我看到code1,code2在第二列,OP輸出顯示code1列的值是a,b,c等。 – radar 2014-09-25 20:17:59

+0

@Rajesh - 抱歉,從未更新小提琴... http://sqlfiddle.com/ #!4/d320d/4。我原來的帖子使用了列名(代碼)而不是列值(codevalue)。謝謝! – sgeddes 2014-09-25 20:24:00

+0

@sgeddes我加入了多個表格。是否在語句(sekect> from> join on> unpivot> join on> where)或(select> from> join on> join on> unpivot> where)之間插入unpivot?我想如何分組這些? – Futochan 2014-09-25 21:58:24