select decode(grouping(所属行业),1,'小计',序号) 序号,decode(grouping(所属行业),1,所属行业,客户名称)客户名称,容量
from table1
group by rollup(所属行业)

解决方案 »

  1.   

    SQL> select * from t;ID   NAME                    CONTENT REGION
    ---- -------------------- ---------- --------------------
    1    电子公司1                   100 电子
    2    电子公司2                   110 电子
    3    化工厂1                      50 化工
    4    化工厂2                      51 化工SQL> select decode(grouping_id(region, id, name), 0, id, 3, '小计', 7, '总计') id,
      2         decode(grouping_id(region, id, name), 3, region, name) name,
      3         sum(content)
      4  from   t
      5  group  by rollup(region, id, name)
      6  having grouping_id(region, id, name) in (0, 3, 7);ID   NAME                 SUM(CONTENT)
    ---- -------------------- ------------
    1    电子公司1                     100
    2    电子公司2                     110
    小计 电子                          210
    3    化工厂1                        50
    4    化工厂2                        51
    小计 化工                          101
    总计                               311已选择7行。SQL> select decode(grouping_id(region, id, name), 0, id, 3, '小计', 7, '总计') id,
      2         decode(grouping_id(region, id, name), 3, region, name) name,
      3         sum(content)
      4  from   t
      5  group  by rollup(region, id, name)
      6  having grouping_id(region, id, name) in (0, 3);ID   NAME                 SUM(CONTENT)
    ---- -------------------- ------------
    1    电子公司1                     100
    2    电子公司2                     110
    小计 电子                          210
    3    化工厂1                        50
    4    化工厂2                        51
    小计 化工                          101已选择6行。
      

  2.   

    楼上的大哥,我新建的表结构如下:表名:AATEST
    字段名   数据类型
    ID NUMBER(5)
    NAME VARCHAR2(20)
    CONTENT NUMBER(10)
    REGION VARCHAR2(20)然后按照你的SQL如下:
    select decode(grouping_id(region, id, name), 0, id, 3, '小计', 7, '总计') id,
               decode(grouping_id(region, id, name), 3, region, name) name,
               sum(content)
        from  aatest 
        group  by rollup(region, id, name)
        having grouping_id(region, id, name) in (0, 3, 7);可是执行不过去,显示:ORA-01722:无效数字
    是哪里错了?
      

  3.   

    知道了,是ID NUMBER(5) 这个数据类型修改一下,就好了,谢谢了