deptcode      deptname    supdeptcode           ep
10                杭州        0                   企业1
1001              西湖区      10                  企业2
1002              下城区      10                  企业320                绍兴        0                   企业4
2001              案件区      20                  企业5
我想得到的结果单位           企业数
杭州            3
 西湖区         1
 下城区         1绍兴            2
 案件区         1 就是统计树节点下面节点的所有的和?
高手赐教!

解决方案 »

  1.   

    try it ..
    select t1.deptcode,
           t1.deptname,(
                        select count(distinct ep)
                          from tablename t2
                         start with deptcode = t1.deptcode
                         connect by prior deptcode = supdeptcode
                       ) as ep_count
      from tablename t1
     group by t1.deptcode,t1.deptname
     order by rpad(t1.deptcode,4,0);
      DEPTCODE DEPTNAME   EP_COUNT
    ---------- -------- ----------
            10 杭州              3
          1001 西湖区            1
          1002 下城区            1
            20 绍兴              2
          2001 案件区            1
      

  2.   

    SQL> with a as (select '10' id,'杭州' NAME,0 code,'企業1' ERP FROM DUAL
      2             UNION ALL
      3             select '1001' id,'西湖區' NAME,10 code,'企業2' ERP FROM DUAL
      4             UNION ALL
      5             select '1002' id,'下城區' NAME,10 code,'企業3' ERP FROM DUAL
      6             UNION ALL
      7             select '20' id,'紹興' NAME,0 code,'企業4' ERP FROM DUAL
      8             UNION ALL
      9             select '2001' id,'案件區' NAME,20 code,'企業5' ERP FROM DUAL
     10             )
     11  select ID,lpad(' ',level*2)||name name from a
     12  start with code=0
     13  connect by code=prior id
     14  /
     
    ID   NAME
    ---- --------------------------------------------------------------------------------
    10     杭州
    1001     西湖區
    1002     下城區
    20     紹興
    2001     案件區
    但是統計還是有問題啊!還望高人指點!