–测试数据
create table 表(类别 varchar(10),男性 decimal(20,1),女性 decimal(20,1))
insert 表 select \’小说\’,38.0,59.2
union all select \’散文\’,18.9,30.6
union all select \’哲学\’,16.2,10.2
go

–查询处理
declare @s1 varchar(8000),@s2 varchar(8000)
,@s3 varchar(8000),@s4 varchar(8000),@s5 varchar(8000)
,@i varchar(10)
select @s1=\’\’,@s2=\’\’,@s3=\’\’,@s4=\’\’,@s5=\’\’,@i=\’0\’
select @s1=@s1+\’,@\’+@i+\’ varchar(8000)\’
,@s2=@s2+\’,@\’+@i+\’=\’\’性别=\’\’\’\’\’+name+\’\’\’\’\’\’\’\’
,@s3=@s3+\’
,@\’+@i+\’=@\’+@i+\’+\’\’,[\’\’+[类别]+\’\’]=\’\’+cast([\’+name+\’] as varchar)\’
,@s4=@s4+\’,@\’+@i+\’=\’\’select \’\’+@\’+@i
,@s5=@s5+\’+\’\’ union all \’\’+@\’+@i
,@i=cast(@i as int)+1
from syscolumns
where object_id(\’表\’)=id and name<>\’类别\’

select @s1=stuff(@s1,1,1,\’\’)
,@s2=stuff(@s2,1,1,\’\’)
,@s3=stuff(@s3,1,4,\’\’)
,@s4=stuff(@s4,1,1,\’\’)
,@s5=stuff(@s5,1,15,\’\’)

exec(\’declare \’+@s1+\’
select \’+@s2+\’
select \’+@s3+\’
from 表
select \’+@s4+\’
exec(\’+@s5+\’)\’)
go

–删除测试
drop table 表

/*–测试结果
性别   小说    散文    哲学   
—- —– —– —–
男性   38.0  18.9  16.2
女性   59.2  30.6  10.2

(所影响的行数为 2 行)
–*/

版权声明:本文为xnxqs原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/xnxqs/archive/2005/03/18/120934.html