Als u SQL Server 2005 (of hoger) gebruikt, is hier de code:
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 )
Dit werkt ongeacht hoeveel verschillende statussen je hebt. Het stelt dynamisch een query samen met PIVOT
. De enige manier waarop u PIVOT met dynamische kolommen kunt doen, is door de query dynamisch samen te stellen, wat kan worden gedaan in SQL Server.
Andere voorbeelden:
- SQL Server PIVOT misschien?
- Hoe maak ik een samenvatting door met SQL Server aan een enkele tabel deel te nemen?