sql 横转竖-字段名
--??Á?ת??Ê?À?1
--?âÊÔÊ???
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 ????
--*/