Ihre Unterabfrage kann nicht zwei Werte zurückgeben. Wenn Sie nur Zeichenfolgen verketten möchten, benötigen Sie das xml
nicht Datentyp überhaupt. Sie können das stuff()
tun und Unterabfrage in einer einzigen Anweisung:
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, '');