sql >> Base de Datos >  >> RDS >> Sqlserver

Concatenación de cadenas por ruta xml

Su subconsulta no puede devolver dos valores. Si solo desea concatenar cadenas, no necesita el xml tipo de datos en absoluto. Puedes hacer las stuff() y subconsulta en una sola instrucción:

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