Sorry, I aint givin the complete solution. This I guess you would anyway have it. I am really interested to know how anyone will approach this other part of the problem (unknown number of pivot columns)
CREATE TABLE #T3(iYear int, ID int , Val float)
INSERT INTO #T3 VALUES (2008,7,NULL)
INSERT INTO #T3 VALUES (2009,7,0.0)
INSERT INTO #T3 VALUES (2010,7,0.0)
INSERT INTO #T3 VALUES (2011,7,0.0)
INSERT INTO #T3 VALUES (2008,8,NULL)
INSERT INTO #T3 VALUES (2009,8,0.0)
INSERT INTO #T3 VALUES (2010,8,0.0)
INSERT INTO #T3 VALUES (2011,8,0.0)
select
iYear, [7], [8]
from #t3 T
PIVOT (sum(Val) FOR ID IN ([7],[8])) PVT
---------------------------------------------------------------------------------