动态表行转列怎么实现,SQL语句或存储过程都可以。求指教。
好多的行转列都是讲数据库中的几个数据都列出来,好像没有办法解决所有的问题,比如说我再次添加不一样的数据的时候这个问题怎么解决???...
好多的行转列都是讲数据库中的几个数据都列出来,好像没有办法解决所有的问题,比如说我再次添加不一样的数据的时候这个问题怎么解决???
展开
2个回答
展开全部
可以使用动态行列转换,先拼出相关的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)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询