--那个01,02之类的是什么? 日期吗?declare @s varchar(8000),@i int
select @s='',@i=1
while @i<32
select @s=@s+',['+right('0'+cast(@i as varchar),2)+']=sum(case dd when '+cast(@i as varchar)+' then [money] else 0 end)'
  ,@i=@i+1
exec('select 日期,姓名'+@s+' from(
select 日期=replace(convert(varchar(7),FDateTime,120),''-'',''年'')+''月'',姓名,[money],dd=day(FDateTime) from 消费数据)a group by 日期,姓名')