比如说,有如下树形结构的数据:parent code value
-----------------------
1000 10
1000 1010 10
1010 1011 10
1010 1012 10现在想要得到如下的结果:parent code sum_value
-----------------------
1000 40
1000 1010 30
1010 1011 10
1010 1012 10也就是说,每个节点的sum_value都是它本身的value以及它的所有下级节点的value的和。比如:
1000的sum_value就是1000、1010、1011、1012的value值的合计,结果为40;
1010的sum_value就是1010、1011、1012的value值的合计,结果为30;
1011和1012是叶子节点,所以它们的sum_value就是它们自己的value的值,也就是10。请问这个能否用connect by实现?怎样实现?
如果用connect by无法实现,那么有什么好的方法呢?
select (select...connect by...)的方式虽然可以实现,但效率太低。
哪位高手给指点下,不胜感激!
-----------------------
1000 10
1000 1010 10
1010 1011 10
1010 1012 10现在想要得到如下的结果:parent code sum_value
-----------------------
1000 40
1000 1010 30
1010 1011 10
1010 1012 10也就是说,每个节点的sum_value都是它本身的value以及它的所有下级节点的value的和。比如:
1000的sum_value就是1000、1010、1011、1012的value值的合计,结果为40;
1010的sum_value就是1010、1011、1012的value值的合计,结果为30;
1011和1012是叶子节点,所以它们的sum_value就是它们自己的value的值,也就是10。请问这个能否用connect by实现?怎样实现?
如果用connect by无法实现,那么有什么好的方法呢?
select (select...connect by...)的方式虽然可以实现,但效率太低。
哪位高手给指点下,不胜感激!
解决方案 »
- WIN7 64位系统,Oracle 11g 64位,无法使用PL/SQL Developer导出数据
- 谁能给我一个oracle数据库表空间监控工具啊?求表空间监控工具...急!急!!急!急!急! 在线等啊
- 问一个菜的问题
- oracle9i如何导入数据表
- 当ORACLE中抛出“表或视图不存在”的错误的时候,有没有什么办法知道到底是那张表或视图不存在啊?
- C++Builder调oacle触发器,出现游标超出最大数错误?????
- 怎样将一个table从一tablespace 搬到另外一个tablespace?有没有好办法??
- 紧急求助 EXP-00003错误!!!(分不够再加)
- 关于回滚段的问题,在线等待
- 咨询oracle大师
- database控件怎么用,ODBC或者ORACLE里有么,在哪,怎么添加,需要下载么?
- 10G可否停掉DBMS_STATS.GATHER_DATABASE_STATS_JOB_PROC???
SELECT b.parent, a.sumcode code, SUM(b.value) as "sum_value"
FROM (
SELECT parent, code, value, CONNECT_BY_ROOT code AS sumcode
FROM tt
CONNECT BY PRIOR code=parent) a
JOIN tt b
ON (a.sumcode=b.code)
GROUP BY b.parent, a.sumcode
ORDER BY a.sumcode;可能不符合楼主的要求,等待更好的方法。