发布网友 发布时间:2022-04-10 19:23
共2个回答
热心网友 时间:2022-04-10 20:52
可以使用动态行列转换,先拼出相关的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)
热心网友 时间:2022-04-10 22:10
那你用存储过程。 先预读出数据内容,多少行。 然后用 loop循环。使用动态sql拼接。这样就能实现了追问这个更没有写过,loop没有用过。