Utilisation de PIVOT pour transformer des données dans SQL Server
L'opération PIVOT de SQL Server vous permet de transformer des données d'un format large en un format haut , ce qui facilite la synthèse et l'analyse des données. Ceci est particulièrement utile dans les scénarios où vous souhaitez convertir des données organisées en lignes et colonnes dans un format dans lequel chaque colonne représente un attribut spécifique et chaque ligne représente une valeur particulière pour cet attribut.
Un exemple de scénario est la transformation de l'ensemble de données suivant, qui contient des données dans un format large :
Name1 | Name2 | Value -------|-------|------- A | P1 | 1 A | P2 | 1 A | P3 | 2 B | P1 | 3 B | P2 | 1 B | P4 | 1
Au format suivant :
A B P1 1 4 P2 1 1 P3 2 NULL P4 NULL 1
Pour réaliser cette transformation dans SQL Server 2005, le code suivant peut être utilisé :
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 )
Ce code assemble dynamiquement une requête PIVOT basée sur les valeurs uniques de la colonne Nom1. Il concatène d'abord les valeurs Name1 distinctes dans une liste séparée par des virgules, qui est ensuite utilisée dans l'instruction PIVOT pour créer les nouvelles colonnes. La fonction d'agrégation SUM() calcule la valeur totale de chaque attribut (Name1) dans chaque ligne (Name2).
Le résultat est un ensemble de données transformé avec le format haut souhaité, où chaque colonne représente un attribut Name1 et chaque La ligne contient la valeur de somme correspondante pour cet attribut. Ce format facilite l'analyse et la synthèse des données en fournissant une vue plus concise et organisée des données.
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!