Ihnen fehlt ein Leerzeichen zwischen PivotData
und PIVOT
.
SET @query = @query +
' PIVOT (MAX(VALUE) FOR [NAME] IN (' + @columns + ')) AS p'
// ^--- HERE
Als Ergebnis interpretiert der SQL-Parser PivotDataPIVOT
als einzelne Kennung, was später zu einem Syntaxfehler führt.