现在表:ID,用户ID(外键),消费类型ID(外键),消费额(int),时间
想得到的效果是:搜索 每天每人各种消费类型的消费额
就是需要一个 行列转换 用户ID,消费类型A,消费类型B,消费类型C,   时间(每天一条记录)1         40元       50元       60元        2010/2/20

解决方案 »

  1.   

    select
      用户ID,
      消费类型A=SUM(消费类型A),
      消费类型B=SUM(消费类型B),
      消费类型C=SUM(消费类型C),
      时间
    from
    (
    select
      用户ID,
      消费类型A=CASE 消费类型ID WHEN 'A' THEN 消费额 ELSE 0 END,
      消费类型B=CASE 消费类型ID WHEN 'B' THEN 消费额 ELSE 0 END,
      消费类型C=CASE 消费类型ID WHEN 'C' THEN 消费额 ELSE 0 END,
      时间
    from 原始表
    ) 临时表
    group by 用户ID,时间
      

  2.   

    Declare @sql varchar(8000)
    Set @sql = 'Select 用户ID,convert(varchar(20),时间,23)
    Select @sql = @sql + ',sum(case 消费类型ID when '''+消费类型ID+''' then 消费额 else 0 end) ['+消费类型ID+']'
    from (select distinct 消费类型ID from tab) as tab  
    Select @sql = @sql+' from tab group by 用户ID'
    Exec (@sql)