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 卡号'exec(@sql)
go

解决方案 »

  1.   

    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)
      

  2.   

    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)
    愉快的登山者       ⊙
    ◢◣◢◣◢◣
      

  3.   

    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 卡号