Dévoilement des secrets de PIVOT dans SQL Server
Souvent, nous rencontrons des ensembles de données dans lesquels les données sont structurées d'une manière qui rend leur analyse difficile. et présenté dans un format significatif. Un tel scénario se produit lorsque les données sont organisées en plusieurs colonnes, chacune représentant une valeur différente pour une catégorie spécifique. Pour transformer ces ensembles de données en une table avec des catégories comme colonnes et des valeurs comme lignes, nous pouvons utiliser l'opérateur PIVOT dans SQL Server.
Considérons un scénario dans lequel nous avons une table nommée "mytable" avec les colonnes "Name1" , "Nom2" et "Valeur". Les données de ce tableau représentent différentes valeurs ("P1", "P2", "P3", "P4") associées à différents noms ("A" et "B") :
Name1 Name2 Value A P1 1 A P2 1 A P3 2 B P1 3 B P2 1 B P4 1
Notre objectif consiste à restructurer ces données au format suivant :
A B P1 1 4 P2 1 1 P3 2 NULL P4 NULL 1
Dans SQL Server 2005, nous pouvons tirer parti de la construction de requêtes dynamiques pour accomplir cette transformation à l'aide de PIVOT. Voici un guide étape par étape :
Assemblez une chaîne de noms de colonnes séparés par des virgules : Exécutez la requête suivante pour créer une chaîne contenant tous les "Name1" distincts. " valeurs séparées par des virgules :
DECLARE @cols VARCHAR(1000) SELECT @cols = STUFF(( SELECT distinct ',' + QuoteName([Name1]) FROM myTable FOR XML PATH('') ), 1, 1, '')
Construire le Dynamic SQL Requête : Créez une variable nommée @sqlquery et attribuez-lui le modèle de requête suivant :
DECLARE @sqlquery VARCHAR(2000) SET @sqlquery = 'SELECT * FROM (SELECT Name2, Name1, Value FROM myTable ) base PIVOT (Sum(Value) FOR [Name1] IN (' + @cols + ')) AS finalpivot'
Cette approche construit dynamiquement la clause PIVOT basée sur les valeurs distinctes de la colonne "Nom1". La fonction PIVOT additionne la colonne "Valeur" pour chaque catégorie "Nom1", et le résultat est un tableau dans lequel les valeurs "Nom2" servent d'en-têtes de ligne et les catégories "Nom1" forment les en-têtes de colonnes.
En règle générale En règle générale, PIVOT peut être utilisé chaque fois que vous avez besoin de transformer des données d'une structure orientée colonnes en une structure orientée lignes. Cette technique peut simplifier considérablement les tâches d'analyse et de présentation 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!