declare @s varchar(8000)
set @s='select 姓名'
select @s=@s+' , max(case 课程 when '''+课程+''' then 分数 else 0 end) ['+课程+']'
from (select distinct 课程 from tb) as a
set @s=@s+' from tb group by 姓名'
print @s
exec(@s)
你可以这样来理解,首先他们都可以给变量赋值,像给单个变量赋值时,如果不涉及到数据表操作,通常使用SET关键字,如果是多个变量赋值,并且这些值是从数据表中读取的情况下,一般都采用SELECT赋值。