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

Dati pivot in T-SQL

Se stai utilizzando SQL Server 2005 (o versioni successive), ecco il codice:

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 )

Funzionerà indipendentemente dal numero di stati diversi che hai. Assembla dinamicamente una query con PIVOT . L'unico modo per eseguire PIVOT con colonne dinamiche è assemblare la query in modo dinamico, operazione che può essere eseguita in SQL Server.

Altri esempi:

  • Forse SQL Server PIVOT?
  • Come faccio a creare un riepilogo unendomi a una singola tabella con SQL Server?