sqlserver2000 将查出来的多行数据变成多列
selectt.fzdlx,t.fjbname,t.ficdm,t.frybqfromtdiagnosetwheret.fprn='26158'结果如图,不需要拼字符串,...
select t.fzdlx,t.fjbname,t.ficdm,t.frybq from tdiagnose t where t.fprn='26158'结果如图,不需要拼字符串,我是要这样显示:fjbname,ficdm,frybq,fjbname,ficdm,frybq...不管有多少行,都变成1行的多少列
展开
若以下回答无法解决问题,邀请你更新回答
2个回答
展开全部
首先
我要知道你的表结构。是多张表还是一张表
你这样描述谁也不清楚你的问题
我要知道你的表结构。是多张表还是一张表
你这样描述谁也不清楚你的问题
更多追问追答
追问
一张表里面的数据
追答
用游标可以实现。
假设你这个表名字为student
--定义变量@sql用来存要执行的sql语句
declare @sql varchar(5000) set @sql='select 'student_info: ', '
--定义 @column来存游标取得每一行数据
declare @column varchar(20)
--定义游标
declare cursor1 cursor for
select id from student
--打开游标
open cursor1
--获取第一行的id放到@column里面
fetch next from cursor1 into @column
--开始循环
while @@FETCH_STATUS=0
begin
--取每一行id,Name, Age, Gender
set @sql=@sql+'
,'''+@column+'''
,(select Name from student as s where s.id='''+@column+''')
,(select Age from student as s where s.id='''+@column+''')
,(select Gender from student as s where s.id='''+@column+''')
'
fetch next from cursor1 into @column
end
--关闭游标
close cursor1
--释放游标
deallocate cursor1
--执行@sql
exec (@sql)
最后结果应该为
student_info: 1 张三 18 男 2 李四 女 3 王五 22 女
PS:游标是很邪恶的,非常占资源,如果你能确定id是加一增长的,并且能确定id的最大值,建议你麻烦一点用循环或者临时表写。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你原始表是什么结构啊
更多追问追答
追问
这个跟表结构没关系吧
追答
那你说你这个问题表达清楚了吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询