Wenn Sie SQL Server 2005 (oder höher) verwenden, ist hier der 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 )
Dies funktioniert unabhängig davon, wie viele verschiedene Status Sie haben. Es stellt dynamisch eine Abfrage mit PIVOT
zusammen . PIVOT können Sie nur mit dynamischen Spalten ausführen, indem Sie die Abfrage dynamisch zusammenstellen, was in SQL Server möglich ist.
Weitere Beispiele:
- SQL Server PIVOT vielleicht?
- Wie erstelle ich eine Zusammenfassung durch Verknüpfen mit einer einzelnen Tabelle mit SQL Server?