我有一个表 结构内容如下:
DPTNO,DPTNM, PDPTN,LEVEL01
0000 公司名称 NULL 0
A A部门 0000 1
B B部门 0000 1
AZ A科室 A .2
AA AA班 AZ ..3
AB AB班 AZ ..3
AC AC班 AZ ..3
BZ B科室 B .2
BA BA班 BZ ..3
BB BB班 BZ ..3
现在查询条件为 BA 要求为 查找BA 的所有上级部门
结果为:
DPTNO,DPTNM,LEVEL01
0000 公司名称 0
B B部门 1
BZ B科室 .2
BA BA班 ..3
那位能解决阿??
在线等。
DPTNO,DPTNM, PDPTN,LEVEL01
0000 公司名称 NULL 0
A A部门 0000 1
B B部门 0000 1
AZ A科室 A .2
AA AA班 AZ ..3
AB AB班 AZ ..3
AC AC班 AZ ..3
BZ B科室 B .2
BA BA班 BZ ..3
BB BB班 BZ ..3
现在查询条件为 BA 要求为 查找BA 的所有上级部门
结果为:
DPTNO,DPTNM,LEVEL01
0000 公司名称 0
B B部门 1
BZ B科室 .2
BA BA班 ..3
那位能解决阿??
在线等。
create table tmp3(DPTNO varchar2(100),DPTNM varchar2(100), PDPTN varchar2(100),LEVEL01 int )
insert into tmp3
select '0000','公司名称','NULL',0 from dual union all
select 'A','A部门','0000',1 from dual union all
select 'B','B部门','0000',1 from dual union all
select 'AZ','A科室','A',2 from dual union all
select 'AA','AA班','AZ',3 from dual union all
select 'AB','AB班','AZ',3 from dual union all
select 'AC','AC班','AZ',3 from dual union all
select 'BZ','B科室','B',2 from dual union all
select 'BA','BA班','BZ',3 from dual union all
select 'BB','BB班','BZ',3 from dual;
--执行查询
select * from tmp3
start with DPTNO='BB'
connect by DPTNO = prior PDPTN
order by level01
--查询结果
0000 公司名称 NULL 0
B B部门 0000 1
BZ B科室 B 2
BB BB班 BZ 3
connect by DPTNO = prior PDPTN
start with DPTNO='BA';
查所有上级的
connect by PDPTN = prior DPTNO
start with DPTNO='A';--查A的所有下级
select * from tmp3
start with DPTNO='BA'
connect by DPTNO = prior PDPTN
order by level01
--查询结果
0000 公司名称 NULL 0
B B部门 0000 1
BZ B科室 B 2
BA BA班 BZ 3