请教个问题,高手回答下,谢啦!select

declare @sql varchar(8000)
set @sql = 'select 姓名 '
select @sql = @sql + ' , max(case 课程 when ''' + 课程 + ''' then 分数 else 0 end) [' + 课程 + ']'
from (select distinct 课程 from tb) as a
set @sql = @sql + ' , cast(avg(分数*1.0) as decimal(18,2)) 平均分 , sum(分数) 总分 from tb group by 姓名'
exec(@sql)
)as temp
这种查询为什么不行?我想把动态SQL生成的查询 左联到另一张表,怎么弄法。

解决方案 »

  1.   

    不可以,你可以用openrowset来运行动态语句
      

  2.   

    declare @sql varchar(8000) 
    set @sql = 'select 姓名 ' 
    select @sql = @sql + ' , max(case 课程 when ''' + 课程 + ''' then 分数 else 0 end) [' + 课程 + ']' 
    from (select distinct 课程 from tb) as a 
    set @sql = @sql + ' , cast(avg(分数*1.0) as decimal(18,2)) 平均分 , sum(分数) 总分
    into #tab
    from tb group by 姓名' exec(@sql) select * from #tab