数据库查询行转列
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