select X1,X2,年度,金额 from
(select 大类,中心,大类 AS X1,中心 AS X2,1.0 AS PX,年度,金额, from TEST
union all
select 大类,中心,null,NULL,NULL,2.0 AS PX,sum(金额) from TEST group by 大类,中心
order by 大类,中心,PX) a

解决方案 »

  1.   

    Create Table test(bigclass Varchar2(20), center Varchar2(20), nd Varchar2(20), money Number(5) )             SQL> Insert Into test Values('市场推广','北京','2004-1',200) ;1 行 已插入SQL> Insert Into test Values('市场推广','北京','2004-2',400) ;1 行 已插入SQL> Insert Into test Values('市场推广','天津','2004-1',300) ;1 行 已插入SQL> Insert Into test Values('市场推广','天津','2004-2',500) ;1 行 已插入SQL> Insert Into test Values('市场推广','上海','2004-1',100) ;1 行 已插入SQL> 
    SQL>  Select bigclass,center,nd, Sum(money)
      2   From test
      3   Group By bigclass,center,nd
      4   Union
      5   Select '合计' bigclass, center, '' nd , Sum(money)
      6   From test
      7   Group By center
      8   Order By center ,nd
      9  ;BIGCLASS             CENTER               ND                   SUM(MONEY)
    -------------------- -------------------- -------------------- ----------
    市场推广             北京                 2004-1                      200
    市场推广             北京                 2004-2                      400
    合计                 北京                                             600
    市场推广             上海                 2004-1                      100
    合计                 上海                                             100
    市场推广             天津                 2004-1                      300
    市场推广             天津                 2004-2                      500
    合计                 天津                                             8008 行 已选择SQL>
      

  2.   

    根据楼上的表结构,我来发个刚学会的方法,嘿嘿……SELECT DECODE(grouping(center)+ grouping(bigclass) + grouping(nd), 1, ' 小计', bigclass) bc,
      DECODE(grouping(bigclass), 1, '合计', center) ct,
     SUM(money) my FROM HC_TT
      GROUP BY rollup( bigclass,center, nd);BC                   CT                           MY
    -------------------- -------------------- ----------
    市场推广             北京                        200
    市场推广             北京                        400
     小计                北京                        600
    市场推广             上海                        100
     小计                上海                        100
    市场推广             天津                        300
    市场推广             天津                        500
     小计                天津                        800
    市场推广                                        1500
                         合计                       1500
    10 rows selected
     
    不好意思,我不明白为啥多出来一行……:(