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

Concatenação de strings por caminho xml


Sua subconsulta não pode retornar dois valores. Se você deseja apenas concatenar strings, não precisa do xml tipo de dados em tudo. Você pode fazer o stuff() e subconsulta em uma única instrução:
declare @Rep1Names nvarchar(max) = (
    stuff((select ', [' + report_name + ']' as name
           from (select distinct report_order, report_name
                 from #report
                ) x
           order by report_order
           for xml path('')
          )
         ), 1, 1, '');

declare @Rep2Names nvarchar(max) = (
    stuff(select ', isnull([' + report_name + '], 0) as [' + report_name + ']' as res
           from (select distinct report_order, report_name
                 from #report
                ) x
           order by report_order
           for xml path('')
          )
   ), 1, 1, '');