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