指标报表数据的深度求解: 部门参数信息,部门指标数据。这两类参数信息都是表里动态的
部门参数信息,部门指标数据。这两类参数信息都是表里动态的。 怎么出一个类似于报表2的数据, 报表1的数据我已经能SQL筛出来了。
先拜谢!
比如:
----------------------
部门表
table department
departmentID
departmentName
比如,有如下数据:
1 部门1
2 部门2
----------------------
指标表
table PeformanceIndex
PeformanceIndexID
PeformanceName
比如,有如下数据:
1 出勤率
2 领导满意度
3 工作效率
----------------------
当然中间有一个关联表。
最后能筛选筛选出部门的指标信息:
比如如下格式的数据报表1:
列1列2列3
部门1 出勤率 90分
部门1 领导满意度 92分
部门1 工作效率 95分
部门2 出勤率 84分
部门2 领导满意度 89分
部门2 工作效率 93分
最后,是想得到数据报表2的格式如下:
列1列2列3列4
出勤率 领导满意度工作效率
部门1 90分 92分95分
部门2 84分 89分93分
注意,部门信息,指标信息,都是参数,都是可以动态变的。
现在就是想 要把 我能的出来的数据报表1,变成数据报表2。
这个SQL怎么写想了N久了。 高手帮帮忙?
多谢!
[解决办法]
create table tb(列1 varchar(10),列2varchar(20),列3 varchar(10))
insert into tb
select '部门1', '出勤率', '90分' union all
select '部门1', '领导满意度', '92分' union all
select '部门1', '工作效率', '95分' union all
select '部门2', '出勤率', '84分' union all
select '部门2', '领导满意度', '89分' union all
select '部门2', '工作效率', '93分'
go
declare @sql nvarchar(2000)
set @sql = ''
select @sql = @sql +',max(case when 列2=''' + 列2 +''' then 列3 else null end) as ['+列2+']'
from tb
group by 列2
set @sql = 'select 列1' + @sql + ' from tb group by 列1'
exec(@sql)
/*
列1出勤率工作效率领导满意度
部门190分95分92分
部门284分93分89分
*/