oracle创建树形视图,如何实现根节点的某数值字段为其下叶子字段的和?

两张表,项目表和子项表,子项属于项目,一个项目对应多个子项,没有外键约束,但子项表记录了项目的编号可以通过这个编号找到对应。
子项还有对应的合同表,也是一对多的关系,首先合同表group by子项编号取出没个子项的总合同额,子项表left join把总合同额带着。然后和项目表union已项目编号为parentID,项目的总合同额就是其下所有叶子子项的合同额的汇总。
prj_subprj 子项表,prj_prj项目表,agree子项合同表

SELECT
    sp.subprjno AS BH,
    sp.subprjname AS MC,
    ag.amount AS HT,
    sp.prjno AS PARENT
FROM
    (
        SELECT
            ps.subprjno,
            ps.subprjname,
            ps.prjno
        FROM
            prj_subprj ps
    ) sp
LEFT JOIN (
    SELECT
        A .subprjno,
        SUM (A .amount) AS amount
    FROM
        agree A
    GROUP BY
        A .subprjno
) ag ON sp.subprjno = ag.subprjno
UNION
    SELECT
        pp.prjno AS BH,
        pp.prjname AS MC,
        NULL AS HT,
        NULL AS PARENT
    FROM
        prj_prj pp

项目的总合同额如何从叶子节点的子项合同额汇总过来,创建这个视图

1个回答

不知道是不是没弄清楚你的需求,总感觉你写的太麻烦了
select ps.prjno ,
ps.prjname ,
count(a.amount) as allamount
from prj_prj ps,prj_subprj sp,agree a where ps.xxx=sp.xxx and sp.xxx=a.xxx group by ps.prjno , ps.prjname ,

qq_37129624
ghq-yes 回复csy665: select * from (select a.id,a.name,sum(c.amount) from a,b,c where a.xxx=b.xxx and b.xxx=c.xxx group by a.id,a.name) a left join (select b.id,sum(c.amount) from b,c where b.xxx=c.xxx group by b.id) b on a.id=b.id
10 个月之前 回复
qq_37129624
ghq-yes 回复csy665: 那就分成两部分连接起来,一部分是项目总额,一部分是子项总额。
10 个月之前 回复
csy665
csy665 不是这个意思。子项left join带出各个子项的合同额,还有一个项目表,我要构建树形视图,一个个项目是根节点,项目下的子项是叶子节点,然后每一个项目的总合同额是它下面一个个子项合同额的和
10 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!