我有一个问题:
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
答案 0 :(得分:0)
您需要使用PIVOT
运算符。请阅读此链接:
https://technet.microsoft.com/en-us/library/ms177410%28v=sql.105%29.aspx
您可以使用PIVOT和UNPIVOT关系运算符来更改a 表值表达式到另一个表中。 PIVOT旋转a 通过转动一列中的唯一值来表值表达式 在表达式中输出多个列,并执行 在任何剩余列值上需要它们的聚合 在最终输出中需要的。 UNPIVOT执行相反的操作 通过旋转表值表达式的列来操作PIVOT 到列值。
它包含所有必要的信息和示例如何使用它。