sql >> Databasteknik >  >> RDS >> Sqlserver

Pivotdata i T-SQL

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?


  1. Insamlingsmetod:Trimprocedur i Oracle Database

  2. 3 sätt att säkerhetskopiera en SQLite-databas

  3. Hur man flyttar fil från en katalog till en annan med PL SQL

  4. Skapa ett datum från dag månad och år med T-SQL