SELECT SaleOrderId, stuff((
SELECT ',' + MoldNames
FROM (
SELECT sdi.SaleOrderId, MoldNames
FROM dbo.SubDispatchingInfo AS sdi LEFT OUTER JOIN
dbo.Doc_DispatchRecord AS doc ON doc.SubDispatchID = sdi.Id LEFT OUTER JOIN
base_Mold AS mold ON mold.Id = doc.ObjectID
GROUP BY sdi.SaleOrderId, sdi.Id, mold.MoldNames
) AS b
WHERE b.SaleOrderId = a.SaleOrderId FOR xml path('')
), 1, 1, '') AS MoldNames
FROM (SELECT sdi.SaleOrderId, MoldNames
FROM dbo.SubDispatchingInfo AS sdi LEFT OUTER JOIN
dbo.Doc_DispatchRecord AS doc ON doc.SubDispatchID = sdi.Id LEFT OUTER JOIN
base_Mold AS mold ON mold.Id = doc.ObjectID
where MoldNames is not null
GROUP BY sdi.SaleOrderId, sdi.Id, mold.MoldNames) AS a
GROUP BY SaleOrderId