Oracle中施用sys_connect_by_path函数实现行转列

Oracle中使用sys_connect_by_path函数实现行转列
表结构及数据展现

Oracle中施用sys_connect_by_path函数实现行转列

要实现的效果

Oracle中施用sys_connect_by_path函数实现行转列

实现sql:

select  booktype ,MAX(sys_connect_by_path(t.bookname, '')) as bookname from(
  select a.booktype,a.bookname,row_number() over(PARTITION BY booktype ORDER BY bookname) as rn from a
) t
START WITH rn = 1
CONNECT BY rn = PRIOR rn + 1
AND booktype = PRIOR t.booktype
GROUP BY t.booktype