Tsql 如何将行转换为列?

Tsql 如何将行转换为列?,tsql,pivot,transpose,Tsql,Pivot,Transpose,可能是一个简单的方法,有没有一种方法可以快速转换我的数据,以便它可以跨行而不是按行读取 上面是电流输出,但希望它能在eg中读取 AttendanceNumber, ExamDate, ExamCode1, ExamCode2, ExamCode3, .......ExamCode20 我的sql是 SELECT [AttendanceNumber] ,[ExaminationDate] ,[ExamExaminationCode] FROM [Radioth

可能是一个简单的方法,有没有一种方法可以快速转换我的数据,以便它可以跨行而不是按行读取

上面是电流输出,但希望它能在eg中读取

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

您可以将条件聚合与
行数()一起使用


哇,太棒了,现在我有了数据,可以显示组合的数量和计数吗(例如ExamCode1,ExamCode2组合出现x次。@Simon我不确定我是否理解您的需要。.组合是什么意思?可以解决它,但是没有办法对顺序进行排序,因为每个考勤号的考试日期都是相同的,所以每次我运行它都会给我一个不同的输出!好的,现在排序,按Ra排序diologyID是每名参与者的增量,感谢您在这方面的所有帮助!您应该接受Sagi的回答@Simon,因为这显然是一个很好的解决方案
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