dynamic sql pivot en sql server

Ejecute esta consulta en SQL Server 2008 ahora, pero pronto planee moverla para crear un informe en SQL Report Services:

SELECT * from ( SELECT Amount, Year, column1, column2,column3 from BUYSCTE ) BUY 

Los resultados de mi tabla que se ejecutan sobre la consulta sin el pivote es esta

Column1 | Column2 | Column3| FYYear| Amount|

 1           cat     dog      2011   50 
 1           cat     dog      2012   75
 1           cat     dog      2013   65
 2          fish     snake    2011   23
 2          fish     snake    2012   39
 2          fish     snake    2013   59
 .. 
 ..  
 ..                           2016

so básicamente quiero que los resultados terminen así:

Column1 | Column2 | Column3| 2011| 2012 | 2013 
 1           cat     dog      50    75     65
 2          fish     snake    23    39     59

so la consulta que se me ocurrió para que esto suceda es que primero creé una variable de tabla y la convertí en una variable dinámica e hice un pivote como este,

declare @Year nvarchar(Max)
set @Year = STUFF(
(SELECT ', ' + quotename(FYYear)
from BUYSCTE Group By FYYear order by
FYYear For XML PATH(''))
, 1, 2, '');

Lo anterior completa el valor @Año con: [2011], [2012], [2013], [2014], [2015], [2016]

Lo sé porque cambio la selección anterior a SELECCIONAR @Año solo para verificar si el valor está configurado correctamente

desde allí cambio la selección anterior después de la variable de tabla a

SELECT * from ( SELECT Amount, FYYear, column1, column2,column3 from BUYSCTE ) BUY 
PIVOT( SUM(Amount) FOR FYYear in ([@Year]) ) pvt

pero mis resultados terminan siendo este

 Column1 | Column2 | Column3| @Year|
 1           cat     dog      null   
 2          fish     snake    null

¿Qué estoy haciendo mal? Parece que me falta algo pequeño que no puedo verme a mí mismo. incluso si cambio la función agregada de SUM a COUNT, da 0 para los valores de la columna @Year en lugar de nulo

Respuestas a la pregunta(2)

Su respuesta a la pregunta