I just took your last DDL and replaced the final select with this
SELECT Distinct ROW_NUMBER() OVER(PARTITION BY re.AthleteGuid ORDER BY a.DateOfBirth DESC) AS rn,
r.Guid as RegistrationID
,a.Guid as AthleteID
,a.Firstname as FName
,a.LastName as LName
,a.Gender as Sex
,a.Address1 as Addr
,a.City
,a.[State] as ST
,a.Zip
,a.MedicalConditions as Medical
,a.Email
,a.DayPhone
,a.EveningPhone
,re.USATNumber
,re.TShirtSize
,re.Division as Div
, CASE r.PaperRegistration
WHEN 1 THEN 'Paper'
ELSE
CASE r.PayByCheck
WHEN 1 THEN 'Check'
ELSE 'CC'
END
END as Paytype
,e.Name as [Event]
,r.Date as RaceDate
,TotalFee
,r.OnlineFee
,_rl.relay
FROM #Registration r
INNER JOIN #RegistrationEvent re ON re.RegistrationGuid = r.Guid
INNER JOIN [#Event] e ON e.Guid = re.EventGuid
INNER JOIN #Athlete a ON a.AccountGuid = r.AccountGuid AND a.Guid = re.AthleteGuid
--LEFT JOIN RegistrationDiscount rd ON rd.RegistrationGuid = r.Guid
LEFT JOIN #RegistrationRelayLeg rrl ON rrl.AthleteGuid = a.Guid
--LEFT JOIN #RegistrationQuestion rq ON rq.AthleteGuid = a.Guid
--LEFT JOIN RegistrationAdditionalFee ra ON ra.RegistrationGuid = r.Guid
CROSS APPLY
(
SELECT
CONVERT(NVARCHAR(MAX), rl.LegName) + ',' AS [text()]
,CONVERT(NVARCHAR(MAX), rl.Name) + ',' AS [text()]
,CONVERT(NVARCHAR(MAX), rl.MedicalConditions) + ',' AS [text()]
,CONVERT(NVARCHAR(MAX),Convert(varchar(10),rl.DateOfBirth, 101)) + ',---' AS [text()]
FROM
#RegistrationRelayLeg rl
WHERE
rl.RegistrationGuid = r.Guid
ORDER BY
AthleteGuid
FOR XML PATH('')
) _rl (relay)
WHERE TotalFee > 0
and r.RaceGuid='04010abc-83dd-4aaf-abb1-0177eac5d562'
I think that gets what you want, but it is hard to say for sure.