行列如何转换

agilecoder 2006-07-05 03:47:53
问题一:使用select语句选择出了仅1列的10条记录,而我想把这样的记录转换为10列的1条记录,在sql中有什么好办法吗?
问题二:由1和0组成的多列的记录,如何将每条记录中的这些列中的值组成一个字符串?除了使用select ltrim(str(@a))+ltrim(str(b))..的方法外,还有其它的好方法吗?
...全文
198 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wgsasd311 2006-07-05
  • 打赏
  • 举报
回复
问题二:由1和0组成的多列的记录,如何将每条记录中的这些列中的值组成一个字符串?除了使用select ltrim(str(@a))+ltrim(str(b))..的方法外,还有其它的好方法吗?

create table test(c1 int,c2 int,c3 int,c4 int,c5 int)
insert into test select 1,0,1,0,1
insert into test select 1,1,0,1,0
insert into test select 1,1,0,0,1
insert into test select 0,1,1,0,1
go

declare @sql varchar(8000)
set @sql=''
select @sql=@sql+'+rtrim('+name+')' from syscolumns where id=object_id('test')
set @sql='select '+stuff(@sql,1,1,'')+' from test'
exec(@sql)
agilecoder 2006-07-05
  • 打赏
  • 举报
回复
嗯,的确存在手误,感谢两位!
昵称被占用了 2006-07-05
  • 打赏
  • 举报
回复
1也手误
set @sql='select'+stuff(@sql,1,1,'')
--〉
set @sql='select '+stuff(@sql,1,1,'')
昵称被占用了 2006-07-05
  • 打赏
  • 举报
回复
手误吧
2

select @sql=@sql+'+rtrim('+name+')' from syscolumns where object_id='test'
--〉
select @sql=@sql+'+rtrim('+name+')' from syscolumns where id=object_id('test')

子陌红尘 2006-07-05
  • 打赏
  • 举报
回复
2、实现方式上可能没太多的变通,如果所有列都是0/1,而且要求顺序合并为一列,可以借助系统表

create table test(c1 int,c2 int,c3 int,c4 int,c5 int)
insert into test select 1,0,1,0,1
insert into test select 1,1,0,1,0
insert into test select 1,1,0,0,1
insert into test select 0,1,1,0,1
go

declare @sql varchar(8000)
set @sql=''
select @sql=@sql+'+rtrim('+name+')' from syscolumns where object_id='test'
set @sql='select '+stuff(@sql,1,1,'')+' from test'
exec(@sql)
子陌红尘 2006-07-05
  • 打赏
  • 举报
回复
1、
declare @t table(id int)
insert into @t select 1
union select 2
union select 3
union select 4
union select 5
union select 6

declare @sql varchar(8000)
set @sql=''

select @sql=@sql+','+rtrim(id) from @t order by id

set @sql='select'+stuff(@sql,1,1,'')

exec(@sql)

34,587

社区成员

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

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