完整例子:
select LTRIM(MAX(SYS_CONNECT_BY_PATH(ORG.ORGNAME, '-')), '-') from EOSORG_T_ORGANIZATION ORG start with ORG.ORGID = '103511'
connect by PRIOR ORG.PARENTORGID = ORG.ORGID;
其中MAX函数取序号最大的记录
select MAX(SYS_CONNECT_BY_PATH(ORG.ORGNAME, '-')) from EOSORG_T_ORGANIZATION ORG start with ORG.ORGID = '103511'
connect by PRIOR ORG.PARENTORGID = ORG.ORGID;
ltrim:是个字符串函数,去掉左边的'-'
select LTRIM(SYS_CONNECT_BY_PATH(ORG.ORGNAME,'-'),'-') from EOSORG_T_ORGANIZATION ORG start with ORG.ORGID = '103511'
connect by PRIOR ORG.PARENTORGID = ORG.ORGID;
不带上面两个函数的结果
select SYS_CONNECT_BY_PATH(ORG.ORGNAME,'-') from EOSORG_T_ORGANIZATION ORG start with ORG.ORGID = '103511'
connect by PRIOR ORG.PARENTORGID = ORG.ORGID;
查询条件:必须是个递归查询
select * from EOSORG_T_ORGANIZATION ORG start with ORG.ORGID = '103511' connect by PRIOR ORG.PARENTORGID = ORG.ORGID;
扩展:任意查询条件的例子:
SELECT COL1, LTRIM(MAX(SYS_CONNECT_BY_PATH(COL2, ',')), ',') COL2
FROM (SELECT COL1,
COL2,
MIN(COL2) OVER(PARTITION BY COL1) COL2_MIN,
(ROW_NUMBER() OVER(ORDER BY COL1, COL2)) +
(DENSE_RANK() OVER(ORDER BY COL1)) NUMID
FROM (select 1 COL1,displayname COL2 FROM tbl_aaaa_organization))
START WITH COL2 = COL2_MIN
CONNECT BY NUMID - 1 = PRIOR NUMID
GROUP BY COL1;
其中
select 1 COL1,displayname COL2 FROM tbl_aaaa_organization
是任意的查询条件
FROM (SELECT COL1,
COL2,
MIN(COL2) OVER(PARTITION BY COL1) COL2_MIN,
(ROW_NUMBER() OVER(ORDER BY COL1, COL2)) +
(DENSE_RANK() OVER(ORDER BY COL1)) NUMID
FROM (select 1 COL1,displayname COL2 FROM tbl_aaaa_organization))
就是为了创建一个递归表
拼接表中某一列的所有值
最新推荐文章于 2021-12-07 16:49:39 发布