求行列转换

gngnandgngn 2006-04-10 04:51:25
麻烦各位了

有原始表这样:
table: aaa

id1, id2, id3, m1, m2, m3
a, a, a am1,am2,am3

想转换成这样
id1, id2, id3, m, val
a, a, a, m1, am1
a, a, a, m2, am2
a, a, a, m3, am3

原始表中除了id1, id2, id3其他的列都是不固定的,( 列的数目和名字都不固定), 请各位指点,谢谢了
...全文
258 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
gngnandgngn 2006-04-11
  • 打赏
  • 举报
回复
谢谢子陌, 不过有点问题,
我发现虽然可以定义 @s varchar(8000)
但当@s到4000后就自动截断了, 这样最多只能处理20列左右的数据, 不知道为什么, 请教
futurecool 2006-04-10
  • 打赏
  • 举报
回复
學習...
liangpei2008 2006-04-10
  • 打赏
  • 举报
回复
学习子陌
itblog 2006-04-10
  • 打赏
  • 举报
回复
学习啊~
xeqtr1982 2006-04-10
  • 打赏
  • 举报
回复
学习子陌老大 :)
子陌红尘 2006-04-10
  • 打赏
  • 举报
回复
create table aaa(id1 varchar(4),id2 varchar(4),id3 varchar(4),m1 varchar(4),m2 varchar(4),m3 varchar(4))
insert into aaa select 'a','a','a','am1','am2','am3'

declare @s varchar(8000)
set @s=''
select
@s=@s+' union all select id1,id2,id3,'''+name+''' as m,val='+name+' from aaa'
from syscolumns where id=object_id('aaa') and name not in('id1','id2','id3') order by colid
set @s=stuff(@s,1,10,'')
exec(@s)

/*
id1 id2 id3 m val
---- ---- ---- ---- ----
a a a m1 am1
a a a m2 am2
a a a m3 am3
*/

drop table aaa
sxdoujg 2006-04-10
  • 打赏
  • 举报
回复
up

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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