我有一个表 结构内容如下:
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
那位能解决阿??
在线等。

解决方案 »

  1.   

    这个是ORACLE数据库中的。用SQL语言或函数或存储过程都可以!
      

  2.   

    --测试数据
    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
      

  3.   

    select * from table
    connect by DPTNO  =  prior PDPTN
    start with DPTNO='BA';
    查所有上级的
      

  4.   

    select * from table
    connect by PDPTN  =  prior DPTNO
    start with DPTNO='A';--查A的所有下级
      

  5.   

    --执行查询
    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