SQL Server: Clause PIVOT


Exemple

La clause PIVOT peut être utilisée dans SQL Server (Transact-SQL).

Regardons un exemple. Si nous avions une table d’employés contenant les données suivantes:

numéro_employé nom de famille prénom salaire id_dépt
12009 Sutherland Barbara 54000 45
34974 Yates Fred 80000 45
34987 Erickson Neil 42000 45
45001 Parker Sally 57500 30
75623 Portes Steve 65000 30

Et nous avons exécuté l’instruction SQL suivante qui crée un cross-tabulati sur une requête utilisant la clause PIVOT:

Cela renverrait le résultat suivant:

TotalSalaryByDept 30 45
Salaire total 122500 176000

Cet exemple créerait un tableau croisé dynamique pour afficher le salaire total pour dept_id 30 et dept_id 45. Les résultats sont affichés sur une ligne avec les deux départements apparaissant chacun dans sa propre colonne.

Maintenant, séparons la clause PIVOT et expliquons son fonctionnement.

Spécifiez les colonnes dans les résultats de la tabulation croisée

Premièrement, nous voulons spécifier les champs à inclure dans nos résultats de tabulation croisée. Dans cet exemple, nous souhaitons inclure la valeur littérale « TotalSalary » comme première colonne du tableau croisé dynamique. Et nous voulons créer une colonne pour dept_id 30 et une deuxième colonne pour dept_id 45. Cela nous donne 3 colonnes dans notre tableau croisé dynamique.

SELECT "TotalSalary" AS TotalSalaryByDept, , 

Spécifiez la source Données de la table

Ensuite, nous devons spécifier une instruction SELECT qui retournera les données source pour le tableau croisé dynamique.

Dans cet exemple, nous voulons renvoyer les valeurs dept_id et de salaire de la table des employés:

(SELECT dept_id, salary FROM employees) AS SourceTable

Vous devez spécifier un alias pour la requête source. Dans cet exemple, nous avons aliasé la requête comme SourceTable.

Spécifier la fonction d’agrégation

Ensuite, nous devons spécifier la fonction d’agrégation à utiliser lors de la création de notre requête de tabulation croisée. Vous pouvez utiliser n’importe quel agrégat tel que les fonctions SUM, COUNT, MIN, MAX ou AVG.

Dans cet exemple, nous allons utiliser la fonction SUM. Cela additionnera les valeurs de salaire:

PIVOT(SUM(salary)

Spécifier les valeurs de pivot

Enfin, nous devons spécifier les valeurs de pivot à inclure dans nos résultats . Ceux-ci seront utilisés comme en-têtes de colonne dans notre requête de tabulation croisée.

Dans cet exemple, nous allons renvoyer uniquement les valeurs dept_id de 30 et 45. Ces valeurs deviendront nos en-têtes de colonne dans notre tableau croisé dynamique table. Notez également que ces valeurs sont une liste finie des valeurs dept_id et ne contiendront pas nécessairement toutes les valeurs possibles.

FOR dept_id IN (, )

Maintenant, quand nous mettons tout cela ensemble, nous obtenons le tableau croisé dynamique suivant:

TotalSalaryByDept 30 45
TotalSalary 122500 176000

Leave a Reply

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *