2016-11-08 10 views
3

おそらく単純なものですが、データをすばやく転置して行単位ではなく横方向に読み込む方法があります。上記行を列に転記するにはどうすればよいですか?

enter image description here

電流出力ですが、例えば全体で、それは読みたい

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

私のSQLでは、ROW_NUMBER()との条件付き集約を使用することができます

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 

答えて

1

です:

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 
+0

すごくうまくいくので、私は自分のデータを持っているので、組み合わせの数と数を表示することは可能ですか? ExamCode1、ExamCode2のコンボがx回発生します。 – Simon

+0

@シモン私はあなたが必要なものを理解しているか分からない。組み合わせによってはどういう意味ですか? – sagi

+0

そのOKは解決しましたが、受験日が受講番号ごとに同じであるため、注文をランク付けする方法はありません。したがって、これを実行するたびに私は別の出力が得られます! – Simon

関連する問題