1、行轉列
SELECT WM_CONCAT(COLUMN_NAME) COLUMN_NAME FROM USER_TAB_COLUMNS WHERE TABLE_NAME = 'T_CREATE_TABLE_1'
SELECT LISTAGG(COLUMN_NAME,';') WITHIN GROUP(ORDER BY COLUMN_NAME) COLUMN_NAME FROM USER_TAB_COLUMNS WHERE TABLE_NAME = 'T_CREATE_TABLE_1'

注:WM_CONCAT是未公開的函數,在10.2.0.5上,其返回類型從varchar2變為了clob,而在12c當中,已經取消了此函數,所以最好別用
LISTAGG(XXX,XXX) WITHIN GROUP( ORDER BY XXX),用法就像聚合函數一樣,通過Group by語句,把每個Group的一個字段,拼接起來
上面2個行數是把行用符號拼接成一列;還有PIVOT行數,可以把行轉成多列
SELECT * FROM T_CREATE_TABLE_1 PIVOT (MAX(COLUMN_1) FOR COLUMN_5 IN ('列1','列2','列3'));

2、列轉行
SELECT COLUMN_ID,COLUMN_NAME,COLUMN_DATA FROM T_CREATE_TABLE_1 UNPIVOT (COLUMN_DATA FOR COLUMN_NAME IN (COLUMN_1,COLUMN_5));


注:轉換的列必須數據類型一致
