统计子节点数据树结构表 c_treeid parentid   name
1    0        中国
2    1        江西
3    1        安徽
4    2        南昌
5    2        抚州
6    5        黎川
7    4        赣州业务表 c_bb 主键   外键(c_ctree)    金额
bid    id       amount1      5       200
2      2       500
3      3      100
4      2       500
5      6       400
6      7      300
7      4       200统计业务表 c_bb 对应江西、安徽所有子节点总数和金额总数
说白了就是,统计所有叶子节点的数据

解决方案 »

  1.   

    用connect by,
    搜搜以前的贴子看下吧,
    你自己肯定能搞定 
      

  2.   

    connect by 只能查询,不能统计,而且效率好像很低,能否给个example,谢谢
      

  3.   

    SELECT NAME, COUNT(1) COUNT, SUM(AMOUNT) SUM
      FROM (SELECT ID, CONNECT_BY_ROOT NAME NAME
              FROM C_TREE S
            CONNECT BY PRIOR S.ID = PARENTID
             START WITH PARENTID = 1) P,
           C_BB B
     WHERE B.ID = P.ID
       AND P.NAME IN ('江西', '安徽')
     GROUP BY NAME;
    --输出
    NAME       COUNT      SUM
    江西       6          2100
    安徽       1          100
      

  4.   

    3楼正解,前几天刚好看到connect_by_root 这个操作符,呵呵,我来晚了
      

  5.   

    select sum(b.amount) from c_tree a inner join c_bb b on a.id=b.id where
    a.id not in (select parentid from c_tree)

    求叶节点总金额select count(*) from c_tree where
    id not in (select parentid from c_tree)
    求叶节点数量
      

  6.   

    学习!!Oracle10g新特性——增强的CONNECT BY子句