Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Pivot-Daten in T-SQL

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?