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,'');
J'ai mis à jour votre SQLFiddle avec la solution.
-
STUFF() fonction pour supprimer le premier
','
(virgule) à partir de la première caractéristique. -
POUR XML pour créer un document XML à partir d'un résultat de requête. C'est une astuce bien connue avec SQL Server - parce que la colonne n'est pas nommée, il n'y a pas d'élément produit et seul le texte brut (de chaque ligne) est sorti, écrasé en une seule ligne.
Très peu d'articles sur Internet tentent de l'expliquer en détail, car le code est à peu près laissé comme une explication en soi.