|
SYS_CONNECT_BY_PATH
SQL> create table t(col1 varchar2(10),col2 varchar2(10));
表已创建。
SQL>
SQL> insert into t values('001','vl1');
已创建 1 行。
SQL> insert into t values('001','vl2');
已创建 1 行。
SQL> insert into t values('001','vl3');
已创建 1 行。
SQL> insert into t values('002','vl1');
已创建 1 行。
SQL> insert into t values('002','vl2');
已创建 1 行。
SQL> insert into t values('002','vl3');
已创建 1 行。
SQL> insert into t values('002','vl4');
已创建 1 行。
SQL> COMMIT;
提交完成。
SQL> select * from t;
COL1 COL2
---------- ----------
001 vl1
001 vl2
001 vl3
002 vl1
002 vl2
002 vl3
002 vl4
已选择7行。
SQL> COL COL2 FORMAT A20
SQL> SELECT COL1,LTRIM(MAX(SYS_CONNECT_BY_PATH(COL2,',')),',') COL2
2 FROM
3 (
4 SELECT COL1,COL2,MIN(COL2) OVER(PARTITION BY COL1) COL2_MIN,
5 (ROW_NUMBER() OVER(ORDER BY COL1,COL2))+(DENSE_RANK() OVER (ORDER BY COL1)) NUMID
6 FROM T
7 )
8 START WITH COL2=COL2_MIN CONNECT BY NUMID-1=PRIOR NUMID
9 GROUP BY COL1;
COL1 COL2
---------- --------------------
001 vl1,vl2,vl3
002 vl1,vl2,vl3,vl4 |
|