update parent
set longtext =
stuff((
select ',' + c.char + ': ' + c.val
from child c
where c.uid = parent.uid
for xml path(''), type).value('.','nvarchar(max)'),1,1,'');
Ik heb je SQLFiddle bijgewerkt met de oplossing.
-
STUFF() functie om de leidende
','
. te verwijderen (komma) van het eerste kenmerk. -
VOOR XML om een XML-document te maken van een queryresultaat. Dit is een bekende truc met SQL Server - omdat de kolom geen naam heeft, wordt er geen element geproduceerd en wordt alleen de onbewerkte tekst (van elke rij) uitgevoerd, samengevoegd tot een enkele rij.
Er zijn maar heel weinig artikelen op internet die het in detail proberen uit te leggen, aangezien de code eigenlijk een uitleg op zich is.