有一个表
姓名 人员类别 工资发放日期 基本养老金 价格补贴 生产补贴........
张三 退休 200607 100 100 100
李四 退养 200607 100 100 100
王五 退休 200607 100 100 100
后边还有很多列!都是补款和扣款的项目!
这个表结构不是本人设计的,要不然也不会出现这种问题!
我想通过脚本实现以下结果:人员类别 退休 退休 退养
姓名 张三 王五 李四
工资发放日期 200607 200607 200607
基本养老金 100 100 100
价格补贴 100 100 100
生产补贴 100 100 100
.
.
.
.
请各位朋友帮忙解决一下这个问题!我在这里先谢谢了!
姓名 人员类别 工资发放日期 基本养老金 价格补贴 生产补贴........
张三 退休 200607 100 100 100
李四 退养 200607 100 100 100
王五 退休 200607 100 100 100
后边还有很多列!都是补款和扣款的项目!
这个表结构不是本人设计的,要不然也不会出现这种问题!
我想通过脚本实现以下结果:人员类别 退休 退休 退养
姓名 张三 王五 李四
工资发放日期 200607 200607 200607
基本养老金 100 100 100
价格补贴 100 100 100
生产补贴 100 100 100
.
.
.
.
请各位朋友帮忙解决一下这个问题!我在这里先谢谢了!
if object_id('tb') is not null
drop table tb
GO
create table tb(姓名 varchar(10),人员类别 varchar(10),工资发放日期 varchar(10),基本养老金 int,价格补贴 int,生产补贴 int)
insert tb
select '张三','退休','200607',100,100,100 union all
select '李四','退养','200607',100,100,100 union all
select '王五','退休','200607',100,100,100
GO
declare @sql varchar(8000)
declare @str1 varchar(8000),@str2 varchar(8000),@str3 varchar(8000),
@str4 varchar(8000),@str5 varchar(8000),@str6 varchar(8000)
select
@str1 = 'select ''人员类别'' as 人员类别',
@str2 = 'select ''姓名''',
@str3 = 'select ''工资发放日期''',
@str4 = 'select ''基本养老金''',
@str5 = 'select ''价格补贴''',
@str6 = 'select ''生产补贴'''
----遍历表,动态生成字符串
select
@str1 = @str1 + ',''' + 人员类别 + ''' as ''' + 人员类别 + '''',
@str2 = @str2 + ',''' + 姓名 + '''',
@str3 = @str3 + ',''' + rtrim(工资发放日期) + '''',
@str4 = @str4 + ',''' + rtrim(基本养老金) + '''',
@str5 = @str5 + ',''' + rtrim(价格补贴) + '''',
@str6 = @str6 + ',''' + rtrim(生产补贴) + ''''
from tb
----执行
set @sql =
@str1 + ' union all ' + @str2 + ' union all ' + @str3 + ' union all ' + @str4 + ' union all ' + @str5 + ' union all ' + @str6
--print @sql
exec(@sql)----清除测试环境
drop table tb
select
'人员类别' as 人员类别,'退休' as '退休','退养' as '退养','退休' as '退休'
union all
select '姓名','张三','李四','王五'
union all
select '工资发放日期','200607','200607','200607'
union all
select '基本养老金','100','100','100'
union all
select '价格补贴','100','100','100'
union all
select '生产补贴','100','100','100'
------------------------------------------------------------------------------------
如果有更多的列,则请楼主参照代码创建对应的@str7,@str8....