Using double concatenations?SELECT s.ID,
STUFF(c.Data, 1, 1, '') AS Codes,
STUFF(t.Data, 1, 1, '') AS Tasks
FROM (
SELECT DISTINCT
ID
FROM @Sample
) AS s
CROSS APPLY (
SELECT DISTINCT ',' + x.Code
FROM @Sample AS x
WHERE x.ID = s.ID
ORDER BY ',' + x.Code
FOR XML PATH('')
) AS c(Data)
CROSS APPLY (
SELECT DISTINCT ',' + CAST(x.TaskID AS VARCHAR(12))
FROM @Sample AS x
WHERE x.ID = s.ID
ORDER BY ',' + CAST(x.TaskID AS VARCHAR(12))
FOR XML PATH('')
) AS t(Data)
N 56°04'39.26"
E 12°55'05.63"