Du saknar ett mellanslag mellan PivotData
och PIVOT
.
SET @query = @query +
' PIVOT (MAX(VALUE) FOR [NAME] IN (' + @columns + ')) AS p'
// ^--- HERE
Som ett resultat tolkar SQL-tolken PivotDataPIVOT
som en enda identifierare, vilket resulterar i ett syntaxfel senare.