如何将行转换为SQL Server中的列

时间:2015-05-24 16:01:55

标签: sql sql-server

我有一个问题:

select ec.examcentrename as ecentre, ss.subjectcode, count(ss.studentsubjectdetailsid) as students from studentexamdetails se
join studentsubjectdetails ss
on se.studentid=ss.studentid and se.semesterid=ss.semesterid and se.examyearid=ss.examyearid
join examcentre ec on se.examcentreid=ec.examcentreid
where se.examyearid=8 and se.semesterid=2
group by ec.examcentrename,ss.subjectcode
order by ec.examcentrename,ss.subjectcode

返回:
ecentre SubjectCode学生
Examcentrea Subjectcodea 10
Examcentreb Subjectcodea 1
Examcentreb Subjectcodeb 8
Examcentreb Subjectcodec 7
Examcentrec Subjectcodea 8
Examcentrec主题代码8
等等......

基本上它会让我回复 examcentrename,subjectcode and numberofstudents

我想将此数据转换为以下格式的列:

Examcentrea   SubjectCodea 10
Examcentreb   Subjectcodea 1  Subjectcodeb 8  Subjectcodec 7
Examcentrec   Subjectcodea 8  Subjectcodey 8

1 个答案:

答案 0 :(得分:0)

您需要使用PIVOT运算符。请阅读此链接:
https://technet.microsoft.com/en-us/library/ms177410%28v=sql.105%29.aspx

  

您可以使用PIVOT和UNPIVOT关系运算符来更改a   表值表达式到另一个表中。 PIVOT旋转a   通过转动一列中的唯一值来表值表达式   在表达式中输出多个列,并执行   在任何剩余列值上需要它们的聚合   在最终输出中需要的。 UNPIVOT执行相反的操作   通过旋转表值表达式的列来操作PIVOT   到列值。

它包含所有必要的信息和示例如何使用它。