Om du använder SQL Server 2005 (eller högre), här är 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 )
Detta kommer att fungera oavsett hur många olika status du har. Den sammanställer dynamiskt en fråga med PIVOT
. Det enda sättet du kan göra PIVOT med dynamiska kolumner är genom att sätta samman frågan dynamiskt, vilket kan göras i SQL Server.
Andra exempel:
- SQL Server PIVOT kanske?
- Hur skapar jag en sammanfattning genom att ansluta till en enda tabell med SQL Server?