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,'');
Ho aggiornato il tuo SQLFiddle con la soluzione.
-
STUFF() funzione per rimuovere il
','
iniziale (virgola) dalla prima caratteristica. -
PER XML per creare un documento XML da un risultato di query. Questo è un trucco ben noto con SQL Server:poiché la colonna non è denominata, non viene prodotto alcun elemento e viene emesso solo il testo non elaborato (di ogni riga), unito in un'unica riga.
Pochissimi articoli su Internet tentano di spiegarlo in dettaglio, dal momento che il codice è praticamente lasciato come una spiegazione in sé e per sé.