sql >> Database teknologi >  >> RDS >> Sqlserver

Pivotdata i T-SQL

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?


  1. Er det muligt at dræbe en enkelt forespørgsel i oracle uden at dræbe sessionen?

  2. Sådan ændres tabel i SQL Server ved at bruge Alter Statement - SQL Server / T-SQL vejledning del 35

  3. Sådan opretter du en MySQL-database i cPanel

  4. Hvordan grupperer jeg på kontinuerlige områder