sql server 转置透视,多行变一行

转置,透视
select
销售姓名,二级部门,三级部门,四级部门
,count(distinct 合同客户名称) as 客户数,产品显示名称
into #new
from OrderChengJ_dd_update
where 成交日期 between ‘2021-07-01’ and ‘2021-08-01’
and 产品二级分类 = ‘自主开发产品’
group by 产品显示名称,销售姓名,二级部门,三级部门,四级部门

declare @sql varchar(8000)
set @sql = ‘select 销售姓名,二级部门,三级部门,四级部门’
select @sql = @sql + ‘,isnull (sum(case 产品显示名称 when ‘’’+产品显示名称+’’’ then 客户数 end),0) as [’+产品显示名称+’]’
from (select distinct 产品显示名称 from #new ) as a
select @sql = @sql+’ from #new group by 销售姓名,二级部门,三级部门,四级部门’
exec(@sql)

多行变一行

with new as (
select count(distinct 合同客户名称) as 客户数,
sum(成交合同金额) as 成交金额,
产品显示名称,
销售姓名,二级部门,三级部门,四级部门
,concat(产品显示名称,’-’,count(distinct 合同客户名称),‘单’) as 产品数量
from OrderChengJ_dd
where 成交日期 between ‘2021-07-01’ and ‘2021-08-01’
and 产品二级分类 = ‘自主开发产品’
group by 产品显示名称,销售姓名,二级部门,三级部门,四级部门
)
select 销售姓名,二级部门,三级部门,四级部门,sum(客户数) as 客户数
, stuff((select ‘,’ + 产品数量 from new where 销售姓名 = a.销售姓名 for xml path(’’)), 1, 1, ‘’) as hobby
from new as a
group by 销售姓名,二级部门,三级部门,四级部门
order by 客户数 desc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值