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行的多少列 展开
 我来答
若以下回答无法解决问题,邀请你更新回答
asian0617
2016-11-10 · TA获得超过1207个赞
知道小有建树答主
回答量:681
采纳率:78%
帮助的人:202万
展开全部
首先
我要知道你的表结构。是多张表还是一张表
你这样描述谁也不清楚你的问题
更多追问追答
追问
一张表里面的数据
追答
用游标可以实现。

假设你这个表名字为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的最大值,建议你麻烦一点用循环或者临时表写。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
唐城冬
2016-11-10 · 大家一起学习进步吧!!!
唐城冬
采纳数:915 获赞数:1815

向TA提问 私信TA
展开全部
你原始表是什么结构啊
更多追问追答
追问
这个跟表结构没关系吧
追答
那你说你这个问题表达清楚了吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式