Comment transposer des données SQL Server à l'aide de PIVOT
L'opérateur PIVOT dans SQL Server vous permet de convertir des lignes en colonnes, transformant les données d'un forme orientée verticalement vers une forme orientée horizontalement. Cela peut être utile lorsque vous cherchez à résumer des données en fonction de plusieurs attributs.
Exemple de données et résultat souhaité
Considérez l'ensemble de données de départ suivant :
SELECT Name1, Name2, Value FROM mytable Name1 | Name2 | Value -------+-------+------ A | P1 | 1 A | P2 | 1 A | P3 | 2 B | P1 | 3 B | P2 | 1 B | P4 | 1
Le résultat souhaité est de faire pivoter les données afin que l'opérateur PIVOT convertisse les valeurs de la colonne Nom1 en en-têtes de colonne et que les valeurs de la colonne Valeur soient résumé par la colonne Nom2.
Transposition de données avec PIVOT dans SQL Server 2005
Pour SQL Server 2005, l'opérateur PIVOT peut être utilisé de la manière suivante :
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 )
Cette requête génère dynamiquement une requête PIVOT basée sur les valeurs distinctes de la colonne Nom1, rassembler les en-têtes de colonnes et résumer les données en conséquence. Au final, le résultat est les données transposées dans le format souhaité :
P1 P2 P3 P4 -------+-------+-------+------- 1 1 2 NULL 3 1 NULL 1
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!