logo

Pivoter et annuler le pivotement en SQL

En SQL, Pivot et Unpivot sont des opérateurs relationnels utilisés pour transformer une table en une autre afin d'obtenir une vue plus simple de la table. Classiquement, on peut dire que Pivot L'opérateur convertit les données des lignes de la table en données de colonne. Le Annuler le pivotement L'opérateur fait le contraire, c'est-à-dire qu'il transforme les données basées sur des colonnes en lignes.

Syntaxe:



1. Pivoter :

 SELECT (ColumnNames) FROM (TableName) PIVOT ( AggregateFunction(ColumnToBeAggregated) FOR PivotColumn IN (PivotColumnValues) ) AS (Alias) //Alias is a temporary name for a table>

2. Annuler le pivotement :

 SELECT (ColumnNames) FROM (TableName) UNPIVOT ( AggregateFunction(ColumnToBeAggregated) FOR PivotColumn IN (PivotColumnValues) ) AS (Alias)>

Exemple 1:
Nous avons créé un tableau simple nommé geeksforgeeks avec des valeurs telles que le nom du cours, la catégorie du cours et le prix et avons inséré les valeurs respectives.



 Create Table geeksforgeeks ( CourseName nvarchar(50), CourseCategory nvarchar(50), Price int ) Insert into geeksforgeeks values('C', 'PROGRAMMING', 5000) Insert into geeksforgeeks values('JAVA', 'PROGRAMMING', 6000) Insert into geeksforgeeks values('PYTHON', 'PROGRAMMING', 8000) Insert into geeksforgeeks values('PLACEMENT 100', 'INTERVIEWPREPARATION', 5000) SELECT * FROM geeksforgeeks>

Le résultat que nous obtenons est :

Nom du cours Catégorie de cours Prix
C LA PROGRAMMATION 5000
JAVA LA PROGRAMMATION 6000
PYTHON LA PROGRAMMATION 8000
EMPLACEMENT 100 PRÉPARATION DE L'ENTREVUE 5000

Maintenant, postulez PIVOT opérateur à ces données :

 SELECT CourseName, PROGRAMMING, INTERVIEWPREPARATION FROM geeksforgeeks PIVOT ( SUM(Price) FOR CourseCategory IN (PROGRAMMING, INTERVIEWPREPARATION ) ) AS PivotTable>

Après avoir utilisé l'opérateur Pivot, nous obtenons le résultat suivant :



Nom du cours LA PROGRAMMATION Préparation à l'entretien
C 5000 NUL
JAVA 6000 NUL
EMPLACEMENT 100 NUL 5000
PYTHON 8000 NUL

Exemple-2 :
Maintenant, nous utilisons le même tableau geeksforgeeks créé dans l'exemple ci-dessus et appliquons l'opérateur Unpivot à notre tableau croisé dynamique.

Candidature UNPIVOT opérateur:

 SELECT CourseName, CourseCategory, Price FROM ( SELECT CourseName, PROGRAMMING, INTERVIEWPREPARATION FROM geeksforgeeks PIVOT ( SUM(Price) FOR CourseCategory IN (PROGRAMMING, INTERVIEWPREPARATION) ) AS PivotTable ) P UNPIVOT ( Price FOR CourseCategory IN (PROGRAMMING, INTERVIEWPREPARATION) ) AS UnpivotTable>

Après avoir utilisé l'opérateur Unpivot, nous récupérons notre table d'origine car nous avons réussi à transformer les colonnes de la table en lignes :

Nom du cours Catégorie de cours Prix
C LA PROGRAMMATION 5000
JAVA LA PROGRAMMATION 6000
EMPLACEMENT 100 PRÉPARATION DE L'ENTREVUE 5000
PYTHON LA PROGRAMMATION 8000