我有一个表,结构如下:i_id int,d_hour int,ch_name char(10),f_value float,
text1 char(10),text2 char(10),text3 char(10),text4 char(10)
记录如下
i_id d_hour ch_name f_value text1 text2 text3 text4
-------------------------------------------------------------------------
1 1 name1 12.6 1号text1 2号text1 3号text1 4号text1
2 2 name2 22.6 1号text2 2号text2 3号text2 4号text2
3 3 name3 44.7 1号text3 2号text3 3号text3 4号text3
4 4 name4 32.8 1号text4 2号text4 3号text4 4号text4
我想要按照d_hour转成
d_hour 1 2 3 4
--------------------------------------------------------
i_id 1 2 3 4
ch_name name1 name2 name3 name4
f_value 12.6 22.6 44.7 32.8
text1 1号text1 1号text2 1号text3 1号text4
text2 2号text1 2号text2 2号text3 2号text4
text3 3号text1 3号text2 3号text3 3号text4
text4 4号text1 4号text2 4号text3 4号text4
请问各位高手,该如何写呀????谢谢。
---------------------------------------------------------------
--行列转换
http://expert.csdn.net/Expert/topic/2633/2633663.xml?temp=.9667475
---------------------------------------------------------------
--查询处理
declare @s1 varchar(8000),@s2 varchar(8000)
,@s3 varchar(8000),@s5 varchar(8000)
,@i varchar(10)
select @s1='',@s2='',@s3='',@s5='',@i='0'
select @s1=@s1+',@'+@i+' varchar(8000)'
,@s2=@s2+',@'+@i+'=''d_hour='''''+name+''''''''
,@s3=@s3+'
select @'+@i+'=@'+@i+'+'',[''+cast(d_hour as varchar)+'']=''''''+cast(['+name+'] as varchar)+'''''''' from 表'
,@s5=@s5+'+'' union all select ''+@'+@i
,@i=cast(@i as int)+1
from syscolumns
where object_id('表')=id and name<>'d_hour'
order by colid
select @s1=substring(@s1,2,8000)
,@s2=substring(@s2,2,8000)
,@s5=substring(@s5,14,8000)
exec('declare '+@s1+'
select '+@s2+@s3+'
exec('''+@s5+')')