oracle 9i 中行转列

SELECT id
,LTRIM(MAX(SYS_CONNECT_BY_PATH(table_name,','))
KEEP (DENSE_RANK LAST ORDER BY curr),',') AS concatenated
FROM ( SELECT id
, table_name
, ROW_NUMBER() OVER (PARTITION BY id ORDER BY table_name) AS curr
, ROW_NUMBER() OVER (PARTITION BY id ORDER BY table_name) -1 AS prev
FROM (select 1 as id,table_name from user_tables where substr(table_name,1,1) in('C')) )
GROUP BY id
CONNECT BY prev = PRIOR curr AND id = PRIOR id
START WITH curr = 1;

原文地址:https://www.cnblogs.com/tianmingt/p/4447514.html