if you're sure that its always maximum of 20 diagnosis then you can use below logicSELECT Person,[Case#],Age,MAX(CASE WHEN Seq=1 THEN Diagnosis END) AS Diagnosis1,MAX(CASE WHEN Seq=1 THEN DiagnosisDate END) AS DiagnosisDate1,MAX(CASE WHEN Seq=2 THEN Diagnosis END) AS Diagnosis2,MAX(CASE WHEN Seq=2 THEN DiagnosisDate END) AS DiagnosisDate2,MAX(CASE WHEN Seq=3 THEN Diagnosis END) AS Diagnosis3,MAX(CASE WHEN Seq=3 THEN DiagnosisDate END) AS DiagnosisDate3,...MAX(CASE WHEN Seq=20 THEN Diagnosis END) AS Diagnosis20,MAX(CASE WHEN Seq=20 THEN DiagnosisDate END) AS DiagnosisDate20FROM (SELECT ROW_NUMBER() OVER (PARTITION BY Person ORDER BY Diagnosisdate) AS Seq,Person,[Case#],Age,Diagnosis,DiagnosisdateFROM Table)tGROUP BY Person,[Case#],Age
------------------------------------------------------------------------------------------------------SQL Server MVPhttp://visakhm.blogspot.com/https://www.facebook.com/VmBlogs