场景:按照集团账户管理模块配置的业态每个末级单位生产多个预算单位,需要获取末级单位。
单位表结构:
-- 单位编号 CLTNO
-- 父单位编号 ORG_PARENT_ID
复制收展SQLcreate table CLT_CLT_INFO
(
ID NUMBER(6) not null
constraint PK_CLT_CLT_INFO
primary key,
TYPE NUMBER,
CLTNO VARCHAR2(100)
constraint UK_CLT_CLT_INFO_CLTNO
unique,
TREENO VARCHAR2(100) default -1 not null,
CHINESENAME VARCHAR2(100),
ORG_PARENT_ID VARCHAR2(100),
ROLEGROUPID NUMBER
)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
思路: 获取所有叶子结点
-- 1、一个结点不是其他结点的父节点,那他就是叶子结点;
-- 2、根节点没有子结点的情况,ORG_PARENT_ID是空的;
-- 根据根结点获取所有叶子结点
复制收展SQLselect *
from CLT_CLT_INFO clt
where 1 = 1
and clt.TREENO like '001007%'
and clt.CLTNO not in (
select distinct clt2.ORG_PARENT_ID
from CLT_CLT_INFO clt2
where clt2.ORG_PARENT_ID is not null
);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9