Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Concatenazione di stringhe per percorso xml

La tua sottoquery non può restituire due valori. Se vuoi solo concatenare stringhe, non hai bisogno di xml tipo di dati affatto. Puoi fare le stuff() e sottoquery in una singola istruzione:

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