如何将行转置为列?

How do I transpose rows into columns?

可能很简单,有没有一种方法可以快速转置我的数据,使其跨行读取而不是按行读取。

以上是当前输出,但希望它能够读取,例如

AttendanceNumber, ExamDate, ExamCode1, ExamCode2, ExamCode3, .......ExamCode20

我的 sql 是

SELECT  [AttendanceNumber]
       ,[ExaminationDate]
       ,[ExamExaminationCode]
  FROM [Radiotherapy].[dbo].[tblRadiologyData] rd 
  where rd.ExaminationDate >= '01 april 2016'
  and   rd.AttendanceSiteCode IN('CNM','RNM')
  ORDER BY rd.LocalPatientIdentifier, rd.ExaminationDate

您可以将条件聚合与 ROW_NUMBER() 一起使用:

SELECT s.attendanceNumber,s.examinationDate,
       MAX(CASE WHEN s.rnk = 1 THEN s.ExamExaminationCode END) as examCode1,
       MAX(CASE WHEN s.rnk = 2 THEN s.ExamExaminationCode END) as examCode2,
       MAX(CASE WHEN s.rnk = 3 THEN s.ExamExaminationCode END) as examCode3,
       ..... As many as you need
FROM (
    SELECT  [AttendanceNumber]
           ,[ExaminationDate]
           ,[ExamExaminationCode]
           ,ROW_NUMBER() OVER(PARTITION BY [AttendanceNumber] ORDER BY [ExaminationDate]) as rnk --Ordered by date ASC 
      FROM [Radiotherapy].[dbo].[tblRadiologyData] rd 
      where rd.ExaminationDate >= '01 april 2016'
      and   rd.AttendanceSiteCode IN('CNM','RNM') ) s
GROUP BY s.attendanceNumber,s.examinationDate