SQL 横排变竖排的问题

假设有张学生成绩表(tb)如下:
Name Subject Result
张三 语文  74
张三 数学  83
张三 物理  93
李四 语文  74
李四 数学  84
李四 物理  94
-------------------------------------------------------------------------
想变成 
姓名         语文        数学        物理          
---------- ----------- ----------- ----------- 
李四         74          84          94
张三         74          83          93

我运行了
declare @sql varchar2(8000)
set @sql = 'select Name as ' + '姓名'
select @sql = @sql + ' , max(case Subject when ''' + Subject + ''' then Result else 0 end) [' + Subject + ']'
from (select distinct Subject from tb) as a
set @sql = @sql + ' from tb group by name'
exec(@sql)

但结果出来的是命令已成功完成。
请问怎么才能显示
姓名         语文        数学        物理          
---------- ----------- ----------- ----------- 
李四         74          84          94
张三         74          83          93
 
 
给例子远比你贴代码快, 

SELECT name, 
       SUM(CASE subject WHEN '语文' THEN Result ELSE 0 END),
    SUM(CASE subject WHEN '数学' THEN Result ELSE 0 END),
    SUM(CASE subject WHEN '物理' THEN Result ELSE 0 END)
FROM tb
GROUP BY Name

猜你喜欢

转载自blog.csdn.net/qq_38567039/article/details/83108889