数据如下:(ORDR为单位序号,NUM1为单位人数,FAR为上级单位序号)
ORDR NUM1 FAR
10 0
1001 5 10
1002 5 10
20 0
2001 5 20
200101 5 2001
---------测试脚本如下--------------------------
insert into AA select '10','0','' from dual;
insert into AA select'1001','5','10' from dual;
insert into AA select'1002','5','10' from dual;
insert into AA select'20','0',''  from dual;
insert into AA select'2001','5','20' from dual;
insert into AA select '200101','5','2001' from dual;想动态汇总下级单位人数,
比如只展示一级单位数据,需要得到如下数据:
ORDR NUM1 FAR
10 10
20 10
   只展示二级单位数据,需要得到如下数据:
ORDR NUM1 FAR
10 10
1001 5 10
1002 5 10
20 10
2001 10 20
    展示到三级单位数据,需得到如下数据:
ORDR NUM1 FAR
10 10
1001 5 10
1002 5 10
20 10
2001 10 20
200101 5 2001

解决方案 »

  1.   


    --一级单位
    select * from AA WHERE LENGTH(ORDR)<=2
    --二级单位
    select * from AA WHERE LENGTH(ORDR)<=4
    --三级单位
    select * from AA WHERE LENGTH(ORDR)<=6
      

  2.   

    汇总一级单位,所有下级的数据。编码为10的下级单位有2个:1001 、1002对应的数量分别是5、5
    需要对这2个汇总求和

    编码为20的下级单位有1个:2001,数量为5
          而2001也有一个下级单位200101,数量也为5
    把编码20的所有下级(包含下级的下级一起求和),结果也为10.如下要求:
    比如只展示一级单位数据,需要得到如下数据: 
    ORDR NUM1 FAR 
    10 10 
    20 10