Il manque un espace entre PivotData et PIVOT .
SET @query = @query +
' PIVOT (MAX(VALUE) FOR [NAME] IN (' + @columns + ')) AS p'
// ^--- HERE
En conséquence, l'analyseur SQL interprète PivotDataPIVOT en tant qu'identifiant unique, entraînant une erreur de syntaxe par la suite.