110110110110110110110------------->>数据表的行列转换,哪位高手给指点?多谢了!

lyq 2004-07-26 05:28:19
sjx sgyxm fresult
A453B 标准干定量 3.5
A453B 公定回潮率 3
A453B 设计捻系数 4
A453B 实际总牵伸 0
A453B 总牵伸效率 0


各位高手,谁能用sql语句给进行行列转换如下:上表行数不固定,奕转换后的列数不固定

sjx, 标准干定量,公定回潮率,设计捻系数,实际总牵伸,总牵伸效率

A453B 3.5 3 4 0 0
...全文
247 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyq 2004-07-27
  • 打赏
  • 举报
回复
数学 int,物理 int,语文 int 能换成别的类型吗。我的数据为字符型,报错。
fhuibo 2004-07-26
  • 打赏
  • 举报
回复
测试

--测试数据
create table 表1(姓名 varchar(10),数学 int,物理 int,语文 int)
insert 表1 select '张三',50,60,70
union all select '李四',80,62,83
union all select '王五',90,85,77
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+'
select @'+@i+'=@'+@i+'+'',[''+[姓名]+'']=''+cast(['+name+'] as varchar) from 表1'
,@s4=@s4+',@'+@i+'=''select ''+@'+@i
,@s5=@s5+'+'' union all ''+@'+@i
,@i=cast(@i as int)+1
from syscolumns
where object_id('表1')=id and name<>'姓名'

select @s1=substring(@s1,2,8000)
,@s2=substring(@s2,2,8000)
,@s4=substring(@s4,2,8000)
,@s5=substring(@s5,16,8000)

exec('declare '+@s1+'
select '+@s2+@s3+'
select '+@s4+'
exec('+@s5+')')
go

--删除测试环境
drop table 表1

/*--测试结果
项目 张三 李四 王五
---- ----------- ----------- -----------
数学 50 80 90
物理 60 62 85
语文 70 83 77

(所影响的行数为 3 行)
--*/
jinjazz 2004-07-26
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/2767/2767759.xml?temp=.7057306
WuChenCan 2004-07-26
  • 打赏
  • 举报
回复
可以用存储过程实现啊!
qiujsh 2004-07-26
  • 打赏
  • 举报
回复
up

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧