34,576
社区成员
发帖
与我相关
我的任务
分享
;with t as (
Select '梁XX' as '客户名称','680000.000000' as '累计消费金额' ,'张XX' as '第一展员','100000.000000' as '回款金额1','昌XX' as '第二展员','100000.000000' as '回款金额2','赵XX' as '第三展员','50000' as '回款金额3','' as '第四展员','' as '回款金额4'
union all
Select '梁XX' as '客户名称','680000.000000' as '累计消费金额' ,'赵XX' as '第一展员','50000.000000' as '回款金额','张XX' as '第二展员','20000.000000' as '回款金额','昌XX' as '第三展员','10000' as '回款金额','' as '第四展员','' as '回款金额'
union all
Select '梁XX' as '客户名称','680000.000000' as '累计消费金额' ,'昌XX' as '第一展员','10000.000000' as '回款金额','赵XX' as '第二展员','50000.000000' as '回款金额','张XX' as '第三展员','90000' as '回款金额','' as '第四展员','' as '回款金额'
union all
Select '梁XX' as '客户名称','680000.000000' as '累计消费金额' ,'赵XX' as '第一展员','10000.000000' as '回款金额','昌XX' as '第二展员','10000.000000' as '回款金额','张XX' as '第三展员','180000' as '回款金额','' as '第四展员','' as '回款金额'
),t2 as (
select [客户名称],[累计消费金额] ,[第一展员] as [展员],convert(float,[回款金额1]) as [回款金额] from t union all
select [客户名称],[累计消费金额] ,[第二展员],[回款金额2] from t union all
select [客户名称],[累计消费金额] ,[第三展员],[回款金额3] from t union all
select [客户名称],[累计消费金额] ,[第四展员],[回款金额4] from t
)
----drop table tmp
select * into tmp from t2 where [展员] is not null and len([展员])>=1
--select * from tmp
declare @s nvarchar(4000),
@q int
set @s=''
;with t as (
select top 10000 [展员],row_number() over(order by sum([回款金额]) ) as Seq from tmp group by [展员] order by sum([回款金额]) desc
)
Select @s=@s+','+quotename(a.[展员])+'=sum(case when [展员]='+quotename(a.[展员],'''')+' then [回款金额] else 0 end)'
from tmp a left join t b on a.[展员] = b.[展员]
group by a.[展员],b.Seq order by b.Seq desc
exec('select [客户名称],max([累计消费金额]) as [累计消费金额] '+@s+' from tmp group by [客户名称]')
----------------------------------------------
客户名称 累计消费金额 张XX 赵XX 昌XX
---- ------------- ---------------------- ---------------------- ----------------------
梁XX 680000.000000 390000 160000 130000
;with t as (
Select '梁XX' as '客户名称','680000.000000' as '累计消费金额' ,'张XX' as '第一展员','100000.000000' as '回款金额1','昌XX' as '第二展员','100000.000000' as '回款金额2','赵XX' as '第三展员','50000' as '回款金额3','' as '第四展员','' as '回款金额4'
union all
Select '梁XX' as '客户名称','680000.000000' as '累计消费金额' ,'赵XX' as '第一展员','50000.000000' as '回款金额','张XX' as '第二展员','20000.000000' as '回款金额','昌XX' as '第三展员','10000' as '回款金额','' as '第四展员','' as '回款金额'
union all
Select '梁XX' as '客户名称','680000.000000' as '累计消费金额' ,'昌XX' as '第一展员','10000.000000' as '回款金额','赵XX' as '第二展员','50000.000000' as '回款金额','张XX' as '第三展员','90000' as '回款金额','' as '第四展员','' as '回款金额'
union all
Select '梁XX' as '客户名称','680000.000000' as '累计消费金额' ,'赵XX' as '第一展员','10000.000000' as '回款金额','昌XX' as '第二展员','10000.000000' as '回款金额','张XX' as '第三展员','180000' as '回款金额','' as '第四展员','' as '回款金额'
),t2 as (
select [客户名称],[第一展员] as [展员],convert(float,[回款金额1]) as [回款金额] from t union all
select [客户名称],[第二展员],[回款金额2] from t union all
select [客户名称],[第三展员],[回款金额3] from t union all
select [客户名称],[第四展员],[回款金额4] from t
)
----drop table tmp
select * into tmp from t2 where [展员] is not null and len([展员])>=1
--select * from tmp
declare @s nvarchar(4000),
@q int
set @s=''
;with t as (
select top 10000 [展员],row_number() over(order by sum([回款金额]) ) as Seq from tmp group by [展员] order by sum([回款金额]) desc
)
Select @s=@s+','+quotename(a.[展员])+'=sum(case when [展员]='+quotename(a.[展员],'''')+' then [回款金额] else 0 end)'
from tmp a left join t b on a.[展员] = b.[展员]
group by a.[展员],b.Seq order by b.Seq desc
exec('select [客户名称],avg([回款金额]) as [回款金额] '+@s+' from tmp group by [客户名称]')
---------------------------------------
客户名称 回款金额 张XX 赵XX 昌XX
---- ---------------------- ---------------------- ---------------------- ----------------------
梁XX 56666.6666666667 390000 160000 130000