SELECT A, 
    SUM(CASE B WHEN '01' THEN D ELSE null END) [01],
    SUM(CASE B WHEN '02' THEN D ELSE null END) [02],
    SUM(CASE B WHEN '05' THEN D ELSE null END) [05]
FROM 表
GROUP BY A
GO

解决方案 »

  1.   

    SELECT A, 
        SUM(CASE B WHEN '01' THEN D/C ELSE null END) [01],
        SUM(CASE B WHEN '02' THEN D/C ELSE null END) [02],
        SUM(CASE B WHEN '05' THEN D/C ELSE null END) [05]
    FROM 表
    GROUP BY A
      

  2.   

    declare @sql varchar(8000)
    set @sql = 'select A,'select @sql = @sql + 'sum(case B when '''+B+''' 
                              then D else null end) ['+B+'],'
      from (select distinct B from 表) aselect @sql = left(@sql,len(@sql)-1) + ' from 表 group by A'exec(@sql)
    go
      

  3.   

    哦!没看清题!哎!我只能得0分!哈哈。。
    declare @sql varchar(8000)
    set @sql = 'select A,'select @sql = @sql + 'sum(case B when '''+B+''' 
                              then D/C else null end) ['+B+'],'
      from (select distinct B from 表) aselect @sql = left(@sql,len(@sql)-1) + ' from 表 group by A'exec(@sql)
    go