Pivoter des lignes en colonnes avec la requête PIVOT sous SQL Server





04-05-2017, 03:55 PM (Ce message a été modifié le : 05-17-2017 04:53 PM par EO-Manager.)
Message : #1

Bar-chart_128x128 Pivoter des lignes en colonnes avec la requête PIVOT sous SQL Server


Comment faire une requête PIVOT en SQL Server qui pivote les lignes d'une table en colonnes ? La requête SQL Server PIVOT permet de pivoter des lignes en colonnes, mais comment utiliser la requête PIVOT sous SQL Server ? Quelle est la syntaxe la plus simple pour écrire une requête PIVOT sous SQL Server?

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ée à chaque mois. Dans cet exemple de PIVOT, seuls les 6 premiers mois de l’année sont présents et pivoté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 et de changer la liste de mois.

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 MOIS

Note: Exécuter uniquement la partie de création de la table.

-- 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



Table SQL Server à Pivoter avec les mois en ligne


Ecrire la requête PIVOT pour SQL Server



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. La sélection de la moyenne des ventes et des mois.
  2. La sous-requête des données de la table source : dbo.VENTES
  3. 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 PIVOT SQL Server pour pivoter les lignes en colonnes


Pièce(s) jointe(s) Miniature(s)
       
Trouver tous les messages de cet utilisateur
Citer ce message dans une réponse


Articles ou discussions similaires
Script de création de la table CLIENTS avec SQL Server
Exécuter une requête SQL SELECT plusieurs fois sur le même CTE
Différence de date en heures minutes et secondes sous SQL Server
Requête obtenir le numéro de version SQL Server exact
Découper une chaîne de caractères de colonne vers des lignes en SQL
Requête SELECT simple sous SQL Server
Procédure stockée SQL Server qui retourne des valeurs avec OUTPUT
Comment créer une procédure stockée simple sous SQL Server
Requête INSERT OR UPDATE sous SQL SERVER
Requête pour lister tous les index d’une base SQL Server