Le Pivot SQL Server pour transformer les lignes en colonnes

Requête avec le Pivot SQL Server pour transformer les lignes d’une table en colonnes. La requête SQL Server PIVOT permet de transformer des lignes en colonnes. Cet exemple de requête simple pivote des lignes d’une table de ventes avec des mois en lignes qui passent en colonnes.

 

Comment utiliser la requête Pivot SQL Server?

Pour utiliser la requête SQL Server Pivot, sélectionner la moyenne des ventes et des mois, construire la sous-requête des données de la table source, et enfin, utiliser le mot clef PIVOT qui transpose les lignes en colonnes en précisant quel opération d’agrégation utiliser.

 

Cet exemple simple de requête PIVOT montre comment construire la requête pas à pas, et passe les lignes contenant les mois en colonnes avec la moyenne du montant des ventes associées à chaque mois.

De plus, dans cet exemple de PIVOT, seuls les 6 premiers mois de l’année sont présents et transposés, c’est-à-dire Janvier à Juin, mais il est facile d’extrapoler et avoir plus de colonnes, pour cela il suffit de copier / coller l’exemple en bas de page et de changer la liste de mois. En effet, ajouter les 6 derniers mois de l’année et vous aurez toute l’année dans votre requête. Un cas pratique d’entreprise aura forcément 12 mois.

 

Le PIVOT SQL Server pour transformer des lignes en colonnes

En effet, la requête PIVOT présentée dessous fait une moyenne des Ventes par Mois au départ en lignes qu’elle affiche ensuite en Colonne, elle est composée de 3 parties :

  1. Premièrement, la sélection de la moyenne des ventes et des mois.
  2. Ensuite, la sous-requête des données de la table source : dbo.VENTES
  3. Enfin, le PIVOT des lignes en colonnes en précisant que le MONTANT devient la moyenne des Mois en colonnes.

 

SELECT	'Moyenne des Ventes' AS [Ventes_Par_Mois],
[Janvier], [Février], [Mars], [Avril], [Mai], [Juin]
FROM
(
SELECT 	MOIS, MONTANT
FROM 	dbo.VENTES
) AS TableSource

PIVOT
(
AVG(MONTANT)
FOR MOIS IN ([Janvier], [Février], [Mars], [Avril], [Mai],[Juin])
) AS TableDePivot;

Requête avec le Pivot SQL Server

 

 

Créer la table d’exemple avec les lignes à pivoter en colonnes

Avant d’exécuter la commande vous pouvez créer la table d’exemple MOIS avec ce script:
Script SQL de création de la table d’exemple des Ventes

Note: Exécuter uniquement la partie de création de la table et non les insertions de données. Elles sont gérées ci-dessous.

-- Insertion des données de ventes pour notre exemple
INSERT INTO dbo.VENTES ( MOIS, MONTANT ) VALUES  ( N'Janvier', 1000)
INSERT INTO dbo.VENTES ( MOIS, MONTANT ) VALUES  ( N'Février', 2000)
INSERT INTO dbo.VENTES ( MOIS, MONTANT ) VALUES  ( N'Mars', 3000)
INSERT INTO dbo.VENTES ( MOIS, MONTANT ) VALUES  ( N'Avril', 4000)
INSERT INTO dbo.VENTES ( MOIS, MONTANT ) VALUES  ( N'Mai', 5000)
INSERT INTO dbo.VENTES ( MOIS, MONTANT ) VALUES  ( N'Juin', 6000)

-- Insertion du deuxième montant pour chaque mois
INSERT INTO dbo.VENTES ( MOIS, MONTANT ) VALUES  ( N'Janvier', 1100)
INSERT INTO dbo.VENTES ( MOIS, MONTANT ) VALUES  ( N'Février', 2200)
INSERT INTO dbo.VENTES ( MOIS, MONTANT ) VALUES  ( N'Mars', 3300)
INSERT INTO dbo.VENTES ( MOIS, MONTANT ) VALUES  ( N'Avril', 4400)
INSERT INTO dbo.VENTES ( MOIS, MONTANT ) VALUES  ( N'Mai', 5500)
INSERT INTO dbo.VENTES ( MOIS, MONTANT ) VALUES  ( N'Juin', 6600)

-- Vérification des montants en lignes mois par mois
SELECT 	*
FROM 	dbo.VENTES

 

Requête SELECT sur la table SQL Server des Ventes

Enfin, cet exemple de PIVOT SQL Server simple en 3 étapes montre que malgré la syntaxe non intuitive de cette fonction, il est possible de l’utiliser et de l’adapter à ses besoins.

 

Pour aller plus loin, la requête PIVOT à son opposé avec le mot clef UNPIVOT. Il permet de transposer les colonnes en lignes, un exemple de requête SQL UNPIVOT est disponible ici.

La documentation officielle Microsoft sur l’utilisation des opérateurs PIVOT et UNPIVOT.

 

 

 

Soyez le premier à commenter

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.


*