请哪位高手帮我写一条sql从前面7列数据库中  得到第10列的 。情况是这样的: 把一个项目 :大厦一期里面 所有的合同名字汇总,每一个合同的最高价格汇总(121999=100000+10000+1999+10000)累计付款 就等于 该列的全部项的和 不知道如何实现》?请大家帮忙下

解决方案 »

  1.   


    with t as
    (
        select 1 as "序号", '大厦一期' as "工程项目", '测试合同1' as "合同名称", 100000 as "最新造价", 90000 as "累计付款" from dual
         union all
        select 2 as "序号", '大厦一期' as "工程项目", '测试合同2' as "合同名称", 5000 as "最新造价", 0 as "累计付款" from dual
         union all
        select 3 as "序号", '大厦二期' as "工程项目", '测试合同3' as "合同名称", 50000 as "最新造价", 45000 as "累计付款" from dual
    )
    select case when grouping("工程项目") = 1 then '合计'
                else "工程项目"
            end as "工程项目",
           case when grouping("合同名称") = 1 then wmsys.wm_concat("合同名称")
                else "合同名称"
            end as "合同名称",
           sum("最新造价") as "最新造价",
           sum("累计付款") as "累计付款"
      from t
     group by rollup("工程项目", "合同名称");
    工程项目     合同名称                                                                                 最新造价         累计付款
    ------------ -------------------------------------------------------------------------------- ------------ ------------
    大厦一期     测试合同1                                                                              100000        90000
    大厦一期     测试合同2                                                                                5000            0
    大厦二期     测试合同3                                                                               50000        45000
    大厦一期     测试合同1,测试合同2                                                                    105000        90000
    大厦二期     测试合同3                                                                               50000        45000
    合计         测试合同1,测试合同2,测试合同3                                                          155000       135000