数据库查询行转列

1.原数据库值

stdname    stdsubject    result
张三 语文
张三 数学
张三 物理
李四 语文
李四 数学
李四 物理
李四 化学
李四 化学

2.要得到如下表

stdname    语文    数学    物理    化学
李四
张三 NULL

3.实现方法

--第一种 调用行转列函数
select * from (select stdname,stdsubject,result from test1 ) as a
pivot(sum(result) for stdsubject in (语文,数学,物理,化学)) t --第二种 自己写
select stdname,
语文 = (select sum(result) from test1 where stdname =a.stdname and stdsubject = '语文' )
,数学 = (select sum(result) from test1 where stdname =a.stdname and stdsubject = '数学' )
,物理 = (select sum(result) from test1 where stdname =a.stdname and stdsubject = '物理' )
,化学 = (select sum(result) from test1 where stdname =a.stdname and stdsubject = '化学' )
from test1 as a
group by stdname
04-15 11:30