--group by with rollup比较麻烦。还是这样简单。
select 直属部门,样品名称,受检单位,检验费用
from 表
union
select 直属部门,'合计' as 样品名称,'',sum(检验费用)
from 表
group by 直属部门
order by 直属部门,case 样品名称 when '合计' then 1 else 0 end

解决方案 »

  1.   

    declare @tb table
    (
      直属部门 varchar(20),
      样品名称 varchar(20),
      受检单位 varchar(20),
      检验费用 int
    )
    insert @tb
    select '省总队',       '水果',      'A公司',    200 union
    select '省总队',       '白糖',      'B公司',    120 union
    select '省总队',       '项链',      'C公司',    500 union
    select '陵水局',       '珍珠',      'D公司',    500 union
    select '陵水局',       '玉器',      'E公司',    600 union
    select '陵水局',       '钻石',      'F公司',    100 union
    select '陵水局',       '玛瑙',      'G公司',    200 select * from (select * from @tb
    union all
    select 直属部门,'合计' as 样品名称,'' as 受检单位,sum(检验费用) as 检验费用  from @tb group by 直属部门) T
    order by 直属部门
      

  2.   

    用with rollup做不到,
    用楼上两位的吧
      

  3.   

    declare @tb table
    (
      直属部门 varchar(20),
      样品名称 varchar(20),
      受检单位 varchar(20),
      检验费用 int
    )
    insert @tb
    select '省总队',       '水果',      'A公司',    200 union
    select '省总队',       '白糖',      'B公司',    120 union
    select '省总队',       '项链',      'C公司',    500 union
    select '陵水局',       '珍珠',      'D公司',    500 union
    select '陵水局',       '玉器',      'E公司',    600 union
    select '陵水局',       '钻石',      'F公司',    100 union
    select '陵水局',       '玛瑙',      'G公司',    200 
    select * from 
    (select * from @tb
    union 
    select 直属部门,'合计' as 样品名称,'' as 受检单位,sum(检验费用) as 检验费用 from @tb group by 直属部门)torder by 直属部门,受检单位 desc/*
    直属部门                 样品名称                 受检单位                 检验费用        
    -------------------- -------------------- -------------------- ----------- 
    陵水局                  玛瑙                   G公司                  200
    陵水局                  钻石                   F公司                  100
    陵水局                  玉器                   E公司                  600
    陵水局                  珍珠                   D公司                  500
    陵水局                  合计                                        1400
    省总队                  项链                   C公司                  500
    省总队                  白糖                   B公司                  120
    省总队                  水果                   A公司                  200
    省总队                  合计                                        820
    */
      

  4.   


    declare @tb table
    (
      直属部门 varchar(20),
      样品名称 varchar(20),
      受检单位 varchar(20),
      检验费用 int
    )
    insert @tb
    select '省总队',       '水果',      'A公司',    200 union
    select '省总队',       '白糖',      'B公司',    120 union
    select '省总队',       '项链',      'C公司',    500 union
    select '陵水局',       '珍珠',      'D公司',    500 union
    select '陵水局',       '玉器',      'E公司',    600 union
    select '陵水局',       '钻石',      'F公司',    100 union
    select '陵水局',       '玛瑙',      'G公司',    200 --第一种
    select 直属部门,样品名称,受检单位,检验费用 
    from (select 直属部门,样品名称,受检单位,检验费用 from @tb union 
          select 直属部门,'合计' as 样品名称,'' as 受检单位,sum(检验费用) from @tb group by 直属部门)a
    order by a.直属部门,case 样品名称 when '合计' then 1 else 0 end
    --第二种
    select 直属部门,样品名称,受检单位,检验费用 
    from (select 直属部门,样品名称,受检单位,检验费用 from @tb union 
          select 直属部门,'合计' as 样品名称,'' as 受检单位,sum(检验费用) from @tb group by 直属部门)a
    order by a.直属部门,a.受检单位 desc
    select 直属部门,样品名称,受检单位,检验费用 
    from (select 直属部门,样品名称,受检单位,检验费用 from @tb union 
          select 直属部门,'合计' as 样品名称,'' as 受检单位,sum(检验费用) from @tb group by 直属部门)a
    order by a.直属部门,case 样品名称 when '合计' then 1 else 0 end/*直属部门                 样品名称                 受检单位                 检验费用        
    -------------------- -------------------- -------------------- ----------- 
    陵水局                  玛瑙                   G公司                  200
    陵水局                  钻石                   F公司                  100
    陵水局                  玉器                   E公司                  600
    陵水局                  珍珠                   D公司                  500
    陵水局                  合计                                        1400
    省总队                  项链                   C公司                  500
    省总队                  白糖                   B公司                  120
    省总队                  水果                   A公司                  200
    省总队                  合计                                        820*/