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 |