按客户分类统计

declare @tb table
(
  客户名称 varchar(20),
  产品名称 varchar(20),
  规格 varchar(20),
  金额 int
)
insert @tb
select 'A客户',       'A名称',      'A规格',    100 union
select 'B客户',       'A名称',      'A规格',    200 union
select 'A客户',       'c名称',      'c规格',    100 union
select 'B客户',       'b名称',      'b规格',    800 union
select 'B客户',       'd名称',      'd规格',    1000

--查询
select (case when grouping(产品名称)=1 and grouping(客户名称)=1
             then '总计'
             when grouping(产品名称)=1
             then 客户名称+'合计'
             else 客户名称
        end) as '客户名称'
       ,isnull(产品名称,'') as '产品名称'
       ,(case when grouping(产品名称)=1 then '' else max(规格) end) as '规格'
       ,sum(金额) as '金额'
from @tb t
group by 客户名称,产品名称
with rollup
order by 客户名称,产品名称

--结果
/*
客户名称                     产品名称                 规格                   金额         
------------------------ -------------------- -------------------- -----------
A客户                      A名称                  A规格                  100
A客户                      c名称                  c规格                   100
A客户合计                                                                    200
B客户                      A名称                  A规格                   200
B客户                      b名称                  b规格                   800
B客户                      d名称                  d规格                   1000
B客户合计                                                                   2000
总计                                                                          2200
*/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值