--sql 2000静态
select 部门 ,
人员类别,
max(case 项目 when '个人保险' then 金额 end) [个人保险],
max(case 项目 when '个人保险' then 借方科目 end) [借方科目],
max(case 项目 when '个人保险' then 贷方科目 end) [贷方科目],
max(case 项目 when '单位保险' then 金额 end) [单位保险],
max(case 项目 when '单位保险' then 借方科目 end) [借方科目],
max(case 项目 when '单位保险' then 贷方科目 end) [贷方科目],
max(case 项目 when '公积金' then 金额 end) [公积金],
max(case 项目 when '公积金' then 借方科目 end) [借方科目],
max(case 项目 when '公积金' then 贷方科目 end) [贷方科目]
from tb
group by 部门 , 人员类别
--sql 2000动态
declare @sql varchar(8000)
set @sql = 'select 部门 , 人员类别 '
select @sql = @sql + ' , max(case 项目 when ''' + 项目 + ''' then 金额 else 0 end) [' + 项目 + ']'
+ ' , max(case 项目 when ''' + 项目 + ''' then 借方科目 else 0 end) [借方科目]'
+ ' , max(case 项目 when ''' + 项目 + ''' then 贷方科目 else 0 end) [贷方科目]'
from (select distinct 项目 from tb) as a
set @sql = @sql + ' from tb group by 部门 , 人员类别'
exec(@sql)