按树形结构 无限层级显示各级公司的生产量
总公司
   子公司1        产量10
       子子公司A   产量10
       子子公司B   产量10   子公司2   产量10
       子子公司AA   产量10公司结构树形无限级定义显示没有问题 无非做个递归 treeview 显示难点在于父节点的产量至 都是汇总子节点产量值累加, 如一个三层结构 1层需要累加2层所有值 2层累加三层所有节点的值原计划设计为 只有末节点ID 记录产量值 一层层累加 这样最灵活  单效率最低
不知各位有什么好办法解决(因功能需求最好能实时查询 最好不用定时汇总功能)另外树形各级节点显示列 内容 比较多,treeview 只有view text 不够显示其他字段内容  能否有其他更好控件代替treeview ?

解决方案 »

  1.   

    还是做递归,不过可以在递归中做一个标记列,表明这个节点是属于哪个初始节点的。例如,查询 2 3 4 5 的总值分别是多少。那么在递归查询2子节点的时候加一列全部值是2的表明是2的子节点,3 4 5同样
    最后得到的一个cte或表值函数可以和你的基本表连接总sum或其他计算。
      

  2.   

    先在SQL用with rollup讲一层层的累加值算好,然后再显示出来.
      

  3.   


    -- table : tb   col : id   parentid   name   qty  ......
    -- 最初的节点 parentid 假设为NULL
    ;with cte as
    (
        select id,parentid,id as pid from tb where parentid is null   --得到所有初始节点
        union all
        select a.id,a.parentid,b.id
        from tb a join cte b on a.parentid = b.id
    )select c.name,sum(b.qty) sqty
    from cte a join tb b on a.id = b.id
        join tb c on a.pid = c.id
    group by c.name
      

  4.   

    参考 http://www.cnblogs.com/yiway/archive/2007/11/12/957281.html