Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SQL Server PIVOT peut-être ?

Puisque vous utilisez SQL Server 2005, voici le code :

DECLARE @cols VARCHAR(1000)
DECLARE @sqlquery VARCHAR(2000)

SELECT  @cols = STUFF(( SELECT distinct  ',' + QuoteName([Name1])
                        FROM myTable FOR XML PATH('') ), 1, 1, '') 


SET @sqlquery = 'SELECT * FROM
      (SELECT Name2, Name1, Value
       FROM myTable ) base
       PIVOT (Sum(Value) FOR [Name1]
       IN (' + @cols + ')) AS finalpivot'

EXECUTE ( @sqlquery )

Cela fonctionnera quel que soit le nombre de statuts différents que vous avez. Il assemble dynamiquement une requête avec PIVOT . La seule façon de faire PIVOT avec des colonnes dynamiques est d'assembler la requête dynamiquement, ce qui peut être fait dans SQL Server.

Autres exemples :

  • Pivoter les données dans T-SQL
  • Comment créer un résumé en joignant une seule table avec SQL Server ?
  • https://stackoverflow.com/q/8248059/570191