日期:2014-05-16  浏览次数:20873 次

大神速来帮忙解决个问题!!
这是一个视图的结构
项目名称                        岗位                  人数   
NoProject                                        规划部部长            1
aaaaaaaaaaaa            现场经理            1
bbbbbbbbbbbb            项目部副部长 1
ccccccccccccc            项目经理            1
dddddddddddd            项目经理            1
eeeeeeeeeeee                   项目经理            2
fffffffffffffffffffffff                          项目经理助理 1


declare @sql varchar(8000)
set @sql='select wprojectid as '+'项目号'
select @sql=@sql+',max(case positionName when '''+ positionName+''' then num else 0 end)[' + positionname + ']'
from (select distinct positionName from ProjectAndPosition ) as a
set @sql=@sql+' from ProjectAndPosition group by wprojectid'
exec(@sql)

通过这个动态的SQL语句能变成格式如下
项目名称  规划部长 项目经理 项目经理助理 现场经理
XXXXX        1                1                   1                      1

问题
①现在我想在每一行之后加一列 总计 即一个项目各岗位的人数和(岗位是动态的 不知道有多少)
②然后在最后一行 加一列 是对应各岗位的人数


------解决方案--------------------
----------------------------------------------------------------
-- Author  :fredrickhu(小F,向高手学习)
-- Date    :2014-03-27 10:10:43
-- Verstion:
--      Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) 
-- Jul  9 2008 14:43:34 
-- Copyright (c) 1988-2008 Microsoft Corporation
-- Enterprise Edition on Windows NT 6.1 <X86> (Build 7601: Service Pack 1)
--
----------------------------------------------------------------
--> 测试数据:[ProjectAndPosition]
if object_id('[ProjectAndPosition]') is not null drop table [ProjectAndPosition]
go 
create table [ProjectAndPosition]([wprojectid] varchar(23),[positionName] varchar(12),[num] int)
insert [ProjectAndPosition]
select 'NoProject','规划部部长',1 union all
select 'a