csy665 2019-01-23 15:47 采纳率: 0%
浏览 350

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条回答

  • ghq-yes 2019-01-23 17:12
    关注

    不知道是不是没弄清楚你的需求,总感觉你写的太麻烦了
    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 ,

    评论

报告相同问题?

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办