Also, can you try this? Logically the same, but not sure if the query plan would be different:SELECT
b.STUDENT_ID,
STUFF(a.CoursesXML.value('.','VARCHAR(256)'),1,1,'') AS Courses
FROM
(SELECT DISTINCT STUDENT_ID FROM STUDENT_COURSE) AS b
CROSS APPLY
(
SELECT ',' + RTRIM(a.COURSE)
FROM STUDENT_COURSE a
WHERE a.STUDENT_ID = b.STUDENT_ID
FOR XML PATH(''),TYPE
) AS a(CoursesXML);