日期:2014-05-20 浏览次数:21064 次
--> 测试数据: #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
------解决方案--------------------