现在有个单位表A 和 项目月投资表B  ,b表里面有每一个月的”投资数额“ 和 ”投资时间“(格式为某年某月:‘2016-01’)这个两个字段,。单位A和B是1对多的关系。现在要根据单位来分组统计当前月的投资 和 本年的投资。这个sql 该怎么写啊  

解决方案 »

  1.   

    使用over开窗函数就可以了
    例子:
    with a as
    (select '单位A' as t_code from dual),
    b as
    (select '单位A' as t_code,'2016-'||lpad(level,2,'0') as t_months ,level as t_amount from dual connect by level <=12)
    select a.*,b.t_months,sum(t_amount)over(partition by a.t_code,b.t_months) as 当月投资,sum(t_amount)over(partition by a.t_code,substr(b.t_months,1,4)) as 当年投资 from a
    left join b
    on b.t_code=a.t_code