Since you are using SQL Server 2005, here is the code:
DECLARE @cols VARCHAR(1000)
DECLARE @sqlquery VARCHAR(2000)
SELECT @cols = STUFF(( SELECT distinct ',' + QuoteName([Name1])
FROM myTable FOR XML PATH('') ), 1, 1, '')
SET @sqlquery = 'SELECT * FROM
(SELECT Name2, Name1, Value
FROM myTable ) base
PIVOT (Sum(Value) FOR [Name1]
IN (' + @cols + ')) AS finalpivot'
EXECUTE ( @sqlquery )
This will work no matter how many different status you have. It dynamically assembles a query with PIVOT
. The only way you can do PIVOT with dynamic columns is by assembling the the query dynamically, which can be done in SQL Server.
Other examples: