动态表行转列怎么实现,SQL语句或存储过程都可以。求指教。

好多的行转列都是讲数据库中的几个数据都列出来,好像没有办法解决所有的问题,比如说我再次添加不一样的数据的时候这个问题怎么解决???... 好多的行转列都是讲数据库中的几个数据都列出来,好像没有办法解决所有的问题,比如说我再次添加不一样的数据的时候这个问题怎么解决??? 展开
 我来答
baiynijecym
2012-12-13 · TA获得超过1841个赞
知道大有可为答主
回答量:1411
采纳率:66%
帮助的人:1163万
展开全部
可以使用动态行列转换,先拼出相关的sql语句的字符串,再用exec 来执行。
追问
没有写过,求例子。
追答
如下:

if object_id('tb') is not null
drop table tb
go
create table tb(姓名varchar(10),课程varchar(10),分数int)
insert into tb values('张三','语文',74)
insert into tb values('张三','数学',83)
insert into tb values('张三','物理',93)
insert into tb values('李四','语文',74)
insert into tb values('李四','数学',84)
insert into tb values('李四','物理',94)
go
select * from tb
go

declare @sql varchar(500)
set @sql='select 姓名'
select @sql=@sql+',max(case 课程 when '''+ 课程+''' then 分数 else 0 end) ['+课程+']'
from (select distinct 课程 from tb) a
set @sql=@sql + ' from tb group by 姓名'
exec(@sql)
hoh_na
2012-12-13 · 超过22用户采纳过TA的回答
知道答主
回答量:58
采纳率:0%
帮助的人:33.1万
展开全部
那你用存储过程。 先预读出数据内或大好容,多少行。 然后用衫铅 loop循环。使用动态sql拼接仿伏。这样就能实现了
追问
这个更没有写过,loop没有用过。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式