Hvis du bruger SQL Server 2005 (eller nyere), her er koden:
DECLARE @cols VARCHAR(1000)
DECLARE @sqlquery VARCHAR(2000)
SELECT @cols = STUFF(( SELECT distinct ',' + QuoteName([Month])
FROM YourTable FOR XML PATH('') ), 1, 1, '')
SET @sqlquery = 'SELECT * FROM
(SELECT Person, Month, Paid
FROM YourTable ) base
PIVOT (Sum(Paid) FOR [Person]
IN (' + @cols + ')) AS finalpivot'
EXECUTE ( @sqlquery )
Dette vil virke uanset hvor mange forskellige status du har. Den samler dynamisk en forespørgsel med PIVOT
. Den eneste måde, du kan lave PIVOT med dynamiske kolonner, er ved at samle forespørgslen dynamisk, hvilket kan gøres i SQL Server.
Andre eksempler:
- SQL Server PIVOT måske?
- Hvordan opbygger jeg en oversigt ved at slutte mig til en enkelt tabel med SQL Server?