我们用到的表结构如下:
三张表的关系为:
现有的测试数据为:
我们需要的结果是:
代码如下:
declare @strsql varchar(8000)
set @strsql = 'select t.stuname [姓名]'
select @strsql = @strsql + ',sum(case s.sname when ''' + sname + ''' then g.[score] end) [' + sname + ']' from (select sname from [subject]) as tmp
select @strsql = @strsql + ' from [score] g,[subject] s, [student] t where g.sid=s.sid and g.stuid = t.stuid group by t.stuid, t.stuname'
exec(@strsql)
sql server 2005 中,已经有实现此功能的内置方法了。
