参考一下compute.或者用一个union all

解决方案 »

  1.   

    select * from
    (
    select * from tablename
    union all 
    select 组,产品='合计',数量 from(
    select 组,sum(数量) as 数量 from tablename group by 组)a
    ) b 
    order by 组
      

  2.   

    --查询处理
    select 组,产品=case grouping(产品) when 1 then '合计' else 产品 end
    ,数量=sum(数量)
    from 表
    group by 组,产品 with rollup
    having grouping(组)=0
      

  3.   

    --测试--测试数据
    create table 表(组 varchar(10),产品 varchar(10),数量 int)
    insert 表 select '组1','产品1',100
    union all select '组1','产品2',200
    union all select '组1','产品3',300
    union all select '组2','产品12',200
    union all select '组2','产品22',200
    union all select '组2','产品32',400
    go--查询处理
    select 组,产品=case grouping(产品) when 1 then '合计' else 产品 end
    ,数量=sum(数量)
    from 表
    group by 组,产品 with rollup
    having grouping(组)=0
    go--删除测试
    drop table 表/*--测试结果组          产品         数量          
    ---------- ---------- ----------- 
    组1         产品1        100
    组1         产品2        200
    组1         产品3        300
    组1         合计         600
    组2         产品12       200
    组2         产品22       200
    组2         产品32       400
    组2         合计         800(所影响的行数为 8 行)
    --*/
      

  4.   

    zjcxc(邹建) :
    你的语句:
    create table 表(组 varchar(10),产品 varchar(10),数量 int)
    insert 表 select '组1','产品1',100
    union all select '组1','产品2',200
    union all select '组1','产品3',300
    union all select '组2','产品12',200
    union all select '组2','产品22',200
    union all select '组2','产品32',400
    go是一行行写出来的?
    还是用其它工具生成的?怎会这么快的啊.............
      

  5.   

    select 组,产品,数量
    from 表
     order by 组
    compute count(产品),sum(数量)  by 组