日期:2014-05-20 浏览次数:20904 次
--> 测试数据: #t if object_id('tempdb.dbo.#t') is not null drop table #t create table #t (人员Id varchar(3),姓名 varchar(4),岗位 varchar(4),性别 varchar(2),部门 varchar(1),年龄 int,管理级别 varchar(4),学历 varchar(4),政治面貌 varchar(8),出生日期 int,籍贯 varchar(4),民族 varchar(4)) insert into #t select '001','张三','经理','男','A',40,'干部','本科','党员',1970,'天津','苗族' union all select '002','李四','客服','女','B',23,'员工','硕士','预备党员',1989,'上海','汉族' union all select '003','王五','店长','男','C',27,'干部','大专','共青团员',1983,'重庆','藏族' union all select '004','王一','保安','女','E',32,'工人','中专','群众',1981,'山西','傣族' union all select '004','小李','司机','男','F',25,'工人','高中','团员',1987,'北京','汉族' union all select '005','小张','司机','男','F',38,'工人','初中','群众',1975,'山东','汉族' select * from #t declare @sql varchar(8000) declare @sql1 varchar(8000) declare @sql2 varchar(8000) declare @sql3 varchar(8000) select @sql = isnull(@sql + ',' , '') + '['+政治面貌+']' from #T group by 政治面貌 select @sql1 =isnull(@sql1 + ',' , '')+'sum(['+政治面貌+']) ['+政治面貌+']' from #t group by 政治面貌 select @sql2 = isnull(@sql2 + ',' , '') + '['+学历+']' from #T group by 学历 select @sql3 =isnull(@sql3 + ',' , '')+'sum(['+学历+']) ['+学历+']' from #t group by 学历 exec('select k.*,'+@sql2+' from ( select 岗位, '+@sql1 + ' from ( select * from (select 岗位,人员Id,政治面貌 from #T) a pivot ( count(人员Id) for 政治面貌 in (' + @sql + ')) b)c group by 岗位)k join (select 岗位, '+@sql3 + ' from ( select * from (select 岗位,人员Id,学历 from #T) a pivot ( count(人员Id) for 学历 in (' + @sql2 + ')) b)c group by 岗位)j on k.岗位=j.岗位 ') 岗位 党员 共青团员 群众 团员 预备党员 本科 初中 大专 高中 硕士 中专 保安 0 0 1 0 0 0 0 0 0 0 1 店长 0 1 0 0 0 0 0 1 0 0 0 经理 1 0 0 0 0 1 0 0 0 0 0 客服 0 0 0 0 1 0 0 0 0 1 0 司机 0 0 1 1 0 0 1 0 1 0 0
------解决方案--------------------