U mist een spatie tussen PivotData en PIVOT .
SET @query = @query +
' PIVOT (MAX(VALUE) FOR [NAME] IN (' + @columns + ')) AS p'
// ^--- HERE
Als resultaat interpreteert de SQL-parser PivotDataPIVOT als een enkele identifier, wat later resulteert in een syntaxisfout.