Anda kehilangan spasi di antara PivotData
dan PIVOT
.
SET @query = @query +
' PIVOT (MAX(VALUE) FOR [NAME] IN (' + @columns + ')) AS p'
// ^--- HERE
Hasilnya, pengurai SQL menginterpretasikan PivotDataPIVOT
sebagai pengenal tunggal, yang mengakibatkan kesalahan sintaks di kemudian hari.