sys_connect_by_path的兩種用法

space6212發表於2019-02-19

本文主要討論sys_connect_by_path的使用方法。



1、帶層次關係

SQL> create table dept(deptno number,deptname varchar2(20),mgrno number);

Table created.

SQL> insert into dept values(1,'總公司',null);

1 row created.

SQL> insert into dept values(2,'浙江分公司',1);

1 row created.

SQL> insert into dept values(3,'杭州分公司',2);

1 row created.

SQL> commit;

Commit complete.

SQL> select max(substr(sys_connect_by_path(deptname,','),2)) from dept connect by prior deptno=mgrno;

MAX(SUBSTR(SYS_CONNECT_BY_PATH(DEPTNAME,','),2))
--------------------------------------------------------------------------------
總公司,浙江分公司,杭州分公司

2、行列轉換
如把一個表的所有列連成一行,用逗號分隔:

SQL> select max(substr(sys_connect_by_path(column_name,','),2))
from (select column_name,rownum rn from user_tab_columns where table_name ='DEPT')
start with rn=1 connect by rn=rownum ;

MAX(SUBSTR(SYS_CONNECT_BY_PATH(COLUMN_NAME,','),2))
--------------------------------------------------------------------------------
DEPTNO,DEPTNAME,MGRNO

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/231499/viewspace-63788/,如需轉載,請註明出處,否則將追究法律責任。

相關文章