2010-02-26 23 views
2

這是一個後續問題Transpose one row into many rows Oracle有無UNPIVOT自動抓取列的列表(的Oracle 11g)

我希望能夠逆轉置任意的查詢結果。

手動UNPIVOT的表,我會做:

select value_type, value from (
(
    -- query to be unpivoted 
    -- EG: select col1, col2, col3, col4, col5 from table 
) 
unpivot 
(
    -- Line I would like to change 
    value for value_type in (col1, col2, col3, col4, col5) 
) 
); 

這適用於返回5列的所有查詢,叫col1, col2,等有什麼我放的,而不是value for value_type in (col1, col2, col3, col4, col5),將抓住所有的在第一部分中選擇的查詢/視圖/表中的列名?

回答

2

您可以通過動態創建SQL語句作爲字符串,然後使用execute immediate來執行它並返回一個遊標,從而在PL/SQL中創建一個存儲過程。

+1

下面是代碼的詳細答案:http://stackoverflow.com/questions/15100101/unpivot-on-an-indeterminate-number-of-columns – Vadzim 2015-01-14 14:44:03