首页 > 代码库 > sqlserver 行转列 语文,数学,物理,化学

sqlserver 行转列 语文,数学,物理,化学

数据库查询行转列

1.原数据库值

stdname    stdsubject    result张三          语文        80张三          数学        90张三          物理        85李四          语文        85李四          数学        92李四          物理        82李四          化学        82李四          化学        82

2.要得到如下表

stdname    语文    数学    物理    化学李四        85     92      82    164张三        80     90      85    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