2016-03-15 126 views
1

我遇到了一個問題,我想將表的列名轉換爲行值,並將這些列名與這些列所屬的表的數據組合在一起。將列名轉換爲oracle中的行值

我有數據表如下:

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語句。但它並沒有給我我想要的結果。請幫忙。

回答

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')); 
+0

謝謝你,你的解決方案向我指出了正確的方向 –