1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| CREATE TABLE PARTNER_GROUPS_MAINTENANCE (
"GROUP_UID" NUMBER(10,0),
"PARTNER_CODE" NUMBER(10,0),
"PARENT_GROUP_UID" NUMBER(10,0));
INSERT INTO PARTNER_GROUPS_MAINTENANCE(GROUP_UID,PARTNER_CODE,PARENT_GROUP_UID) VALUES(1,20,null);
INSERT INTO PARTNER_GROUPS_MAINTENANCE(GROUP_UID,PARTNER_CODE,PARENT_GROUP_UID) VALUES(2,20,1);
INSERT INTO PARTNER_GROUPS_MAINTENANCE(GROUP_UID,PARTNER_CODE,PARENT_GROUP_UID) VALUES(3,20,2);
INSERT INTO PARTNER_GROUPS_MAINTENANCE(GROUP_UID,PARTNER_CODE,PARENT_GROUP_UID) VALUES(1,30,null);
INSERT INTO PARTNER_GROUPS_MAINTENANCE(GROUP_UID,PARTNER_CODE,PARENT_GROUP_UID) VALUES(2,30,1);
INSERT INTO PARTNER_GROUPS_MAINTENANCE(GROUP_UID,PARTNER_CODE,PARENT_GROUP_UID) VALUES(3,30,2);
CREATE TABLE PARTNERS_GROUP (
"GROUP_UID" NUMBER(10,0),
"DESCRIPTION" VARCHAR2(80));
INSERT INTO PARTNERS_GROUP(GROUP_UID,DESCRIPTION) VALUES(1,'GRP1');
INSERT INTO PARTNERS_GROUP(GROUP_UID,DESCRIPTION) VALUES(2,'GRP2');
INSERT INTO PARTNERS_GROUP(GROUP_UID,DESCRIPTION) VALUES(3,'GRP3');
WITH
FLT_GRPUID AS (
SELECT DISTINCT pgm.group_uid,pgm.parent_group_uid
FROM PARTNER_GROUPS_MAINTENANCE pgm
START WITH pgm.parent_group_uid IS NULL
CONNECT BY pgm.parent_group_uid=prior pgm.group_uid)
SELECT DISTINCT LEVEL, pgm.group_uid, sys_connect_by_path(pg.description,'/') "DESCRIPTION", pgm.parent_group_uid
FROM FLT_GRPUID pgm
JOIN partners_group pg ON pg.group_uid=pgm.group_uid
CONNECT BY pgm.parent_group_uid=prior pgm.group_uid; |
Partager