oracle树结构汇总(父级显示子集的合计)


 

我所做过的情况:

所有的数据都是存在末级节点上面的,然后查询的时候要求父节点要显示子集的合计

图一显示末级上面的数据

 

 

 

图二显示父节点的值  可以看出父级节点的值是子集的合计

 

 

 情况就是这样下面给出一个demo,在数据库执行以下就可以看出来该怎么做了

create table t

(id number,

parent_id number,

value number);

insert into t values(1,0,0);

insert into t values(2,1,0);

insert into t values(3,1,0);

insert into t values(4,2,100);

insert into t values(5,3,200);

commit;

select * from t order by id asc;

 

 关键语句:

with ttt as
(select t.*, SYS_CONNECT_BY_PATH(id, '/') || '/' path
from t
start with t.parent_id = 0
connect by prior t.id = t.parent_id)
SELECT id,
parent_id,
value,
(SELECT SUM(value) FROM ttt WHERE path like t1.path || '%') s_value
FROM ttt T1;

 

 

 

 

 

可以看出已经将所有的节点的数据都查出来了

接下就可以挑出父节点的数据,将他更新到父节点数据上,更新的时候可以使用merge into语法这样比较高效。

注意:

每次计算时需要先把原来父节点上面的数据清掉,再从末级汇总上来,要不然计算的结果会包含原来父节点的值

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM