select 卡号,sum(金额) as 总额,sum(次数) as 总次数
,sum(case right(日期,2) when '01' then 金额 end) as [1月金额]
,sum(case right(日期,2) when '02' then 金额 end) as [2月金额]
,sum(case right(日期,2) when '03' then 金额 end) as [3月金额]
,sum(case right(日期,2) when '04' then 金额 end) as [4月金额]
,sum(case right(日期,2) when '05' then 金额 end) as [5月金额]
,sum(case right(日期,2) when '06' then 金额 end) as [6月金额]
,sum(case right(日期,2) when '07' then 金额 end) as [7月金额]
,sum(case right(日期,2) when '08' then 金额 end) as [8月金额]
,sum(case right(日期,2) when '09' then 金额 end) as [9月金额]
,sum(case right(日期,2) when '10' then 金额 end) as [10月金额]
,sum(case right(日期,2) when '11' then 金额 end) as [11月金额]
,sum(case right(日期,2) when '12' then 金额 end) as [12月金额]
from 你的表
group by 卡号
select distinct 日期 into #t from table1
declare @s varchar(3000)
set @s = 'select 卡号, sum(金额) 总金额, sum(次数)总次数'
select @s = @s + ', sum(case when 日期 ='''+ 日期 + ''' then 金额 else 0 end) as [' +日期+']' from #t order by 日期
set @s = @s + ' from table1 group by 卡号'
exec (@s)
select distinct 日期 into #t from table1
declare @s varchar(3000)
set @s = 'select 卡号, sum(金额) 总金额, sum(次数)总次数'
select @s = @s + ', sum(case when 日期 ='''+ 日期 + ''' then 金额 else 0 end) as [' +日期+']' from #t order by 日期
set @s = @s + ' from table1 group by 卡号'
exec (@s)
declare @sql varchar(8000)
set @sql = 'select 卡号,sum(金额) 总金额,sum(次数) 总次数'
select @sql = @sql + ',sum(case 日期 when '''+cast(日期 as varchar(10))+''' then 金额 else 0 end) ['+cast(日期 as varchar(10))+'金额]'
from (select distinct 日期 from 有一表) as a
select @sql = @sql+' from 有一表 group by 卡号'