效果图: 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 ---------------------------------------------- drop table adbc go declare @tb varchar(20) set @tb='tb' exec(' declare @sql varchar(8000) set @sql = ''select * into adbc from (select 姓名 '' select @sql = @sql + '' , max(case 课程 when '''''' + 课程 + '''''' then 分数 else 0 end) ['' + 课程 + '']'' from (select distinct 课程 from '+@tb+') as a set @sql = @sql + '' from '+@tb+' group by 姓名)as xy'' exec(@sql) ') select * from adbc