Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Campo de tabela pai de atualização de SQL com base em várias linhas de tabela filho

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,'');

Atualizei seu SQLFiddle com a solução.

  1. STUFF() função para remover o ',' principal (vírgula) da primeira característica.

  2. PARA XML para criar um documento XML a partir de um resultado de consulta. Este é um truque bem conhecido com o SQL Server - porque a coluna não é nomeada, não há nenhum elemento produzido e apenas o texto bruto (de cada linha) é gerado, misturado em uma única linha.

Muito poucos artigos na internet tentam explicá-lo em detalhes, já que o código é praticamente deixado como uma explicação em si.