oracle层级关系按列存储_oracle递归实现查找整个层级关系

CREATE TABLE TEST_A(ID NUMBER,CSNAME VARCHAR2(200),PARENTID NUMBER);

INSERT INTO TEST_A(ID ,CSNAME ,PARENTID)

VALUES(1,'四川省',NULL);

INSERT INTO TEST_A(ID ,CSNAME ,PARENTID)

VALUES(10,'成都市',1);

INSERT INTO TEST_A(ID ,CSNAME ,PARENTID)

VALUES(11,'绵阳市',1);

INSERT INTO TEST_A(ID ,CSNAME ,PARENTID)

VALUES(100,'金牛区',10);

COMMIT;

WITH TEST_B AS (SELECT ID,RPAD(ID,3) || ' ' || CSNAME CSN,PARENTID,LEVEL LVL

FROM TEST_A A

CONNECT BY PRIOR A.ID = A.PARENTID

START WITH A.PARENTID IS NULL

)

SELECT CASE WHEN C.LVL = 1 THEN A.CSN

WHEN C.LVL = 2 THEN A.CSN || ' ' || C.CSN

ELSE A.CSN || ' ' || B.CSN || ' ' || C.CSN

END

FROM TEST_B A

LEFT JOIN TEST_B B

ON A.ID = B.PARENTID

LEFT JOIN TEST_B C

ON B.ID = C.PARENTID

WHERE A.PARENTID IS NULL;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值