• Thanks Luis. Appreciate that tip. Will do.

    I also found I could get the same result doing this. Not sure which is best, could cause an anomaly, or if it makes a difference

    I moved the additional column into the middle (Aggregated?):

    SELECT

    JobNo,

    MAX(CASE WHEN MileStoneName = 'A' THEN ForecastDate END) AS MilestoneA_Fcst,

    MAX(CASE WHEN MileStoneName = 'A' THEN ActualDate END) AS MilestoneA_Act,

    MAX(CASE WHEN MileStoneName = 'B' THEN ForecastDate END) AS MilestoneB_Fcst,

    MAX(CASE WHEN MileStoneName = 'B' THEN ActualDate END) AS MilestoneB_Act,

    MAX(CASE WHEN MileStoneName = 'C' THEN ForecastDate END) AS MilestoneC_Fcst,

    MAX(CASE WHEN MileStoneName = 'C' THEN ActualDate END) AS MilestoneC_Act,

    MAX(status) as status

    FROM Milestonetable

    LEFT OUTER JOIN

    secondarytable ON Milestonetable.JobNo = secondarytable.JobNo2

    GROUP BY JobNo;