Guide complet pour transformer des données en ligne en données en colonne avec SQL PIVOT

Dans cet article, nous allons détailler comment utiliser la fonctionnalité PIVOT de SQL pour transformer des données en ligne en données en colonne. Le PIVOT est très utile pour organiser les données de manière plus lisible dans la gestion et l’analyse des bases de données. Nous expliquerons pas à pas les concepts de base du PIVOT jusqu’à des exemples d’utilisation concrets.

Sommaire

Concepts de base du PIVOT

Le PIVOT est une fonctionnalité de transformation des données en SQL qui permet de convertir des données en ligne en données en colonne. Par exemple, si les données de vente sont stockées par année et mois sous forme de lignes, vous pouvez les afficher avec les ventes de chaque mois en tant que colonnes. L’utilisation du PIVOT facilite la visualisation et l’analyse des données, ce qui est utile pour l’intelligence d’affaires.

Avantages de l’utilisation du PIVOT

Les avantages de l’utilisation du PIVOT sont les suivants :

Amélioration de la visualisation des données

La conversion des données en ligne en données en colonne permet de comprendre les données de manière plus intuitive. Cela est particulièrement utile pour les ensembles de données volumineux, car ils peuvent être convertis en un format plus facile à visualiser.

Amélioration de l’efficacité de l’analyse

En organisant les données avec PIVOT, vous pouvez extraire rapidement les informations nécessaires, ce qui améliore l’efficacité des tâches d’analyse.

Simplification de la création de rapports

Le PIVOT simplifie la création de rapports complexes. En regroupant plusieurs lignes de données en une seule colonne, les rapports deviennent plus lisibles et la qualité des présentations s’améliore.

Syntaxe de base du PIVOT

La syntaxe SQL de base pour utiliser le PIVOT est la suivante :

SELECT 
    [Colonne fixe],
    [Colonne créée par le pivot 1],
    [Colonne créée par le pivot 2],
    ...
FROM 
    (SELECT [Colonne 1], [Colonne 2], [Colonne à agréger]
     FROM [Table de données source]) AS SourceTable
PIVOT
(
    SUM([Colonne à agréger])
    FOR [Colonne 2] IN ([Colonne créée par le pivot 1], [Colonne créée par le pivot 2], ...)
) AS PivotTable;

Explication de la syntaxe de base du PIVOT

  • Colonne fixe : La colonne qui reste inchangée après la transformation du pivot.
  • Colonne créée par le pivot : La partie où les données en ligne sont converties en données en colonne.
  • Table de données source : La table qui contient les données d’origine sur lesquelles l’opération PIVOT est effectuée.
  • Colonne à agréger : La colonne sur laquelle l’opération d’agrégation est effectuée (par exemple, le montant des ventes).
  • Fonction SUM : La fonction qui définit l’opération d’agrégation. Il est également possible d’utiliser d’autres fonctions comme COUNT, AVG, MAX, MIN, etc.

Exemple concret : PIVOT des données de vente

Voici un exemple concret d’utilisation du PIVOT avec des données de vente. Supposons que le tableau suivant soit les données d’origine :

| Année | Mois | Ventes |
|-------|------|-------|
| 2023  | 1    | 1000  |
| 2023  | 2    | 1500  |
| 2023  | 3    | 1200  |
| 2023  | 4    | 1700  |
| 2023  | 1    | 1100  |
| 2023  | 2    | 1400  |
| 2023  | 3    | 1300  |
| 2023  | 4    | 1600  |

La requête SQL suivante permet de convertir ces données en colonnes représentant les ventes par mois :

SELECT 
    Année,
    [1] AS 'Janvier',
    [2] AS 'Février',
    [3] AS 'Mars',
    [4] AS 'Avril'
FROM 
    (SELECT Année, Mois, Ventes FROM Données_de_vente) AS SourceTable
PIVOT
(
    SUM(Ventes)
    FOR Mois IN ([1], [2], [3], [4])
) AS PivotTable;

L’exécution de cette requête donne le résultat suivant :

| Année | Janvier | Février | Mars  | Avril  |
|-------|---------|---------|-------|--------|
| 2023  | 2100    | 2900    | 2500  | 3300   |

Explication de la requête

  • SELECT Année, Mois, Ventes FROM Données_de_vente extrait les données d’origine.
  • SUM(Ventes) FOR Mois IN ([1], [2], [3], [4]) agrège les ventes de chaque mois et les transforme en colonnes.

De cette manière, vous pouvez convertir les données de vente en colonnes représentant chaque mois.

Exemples d’application du PIVOT

Le PIVOT peut être appliqué non seulement pour des agrégations de base, mais aussi pour des analyses de données plus complexes. Voici quelques exemples d’application :

Évolution des ventes par année

Utilisez le PIVOT pour afficher l’évolution mensuelle des ventes sur plusieurs années.

SELECT 
    Année,
    [1] AS 'Janvier',
    [2] AS 'Février',
    [3] AS 'Mars',
    [4] AS 'Avril',
    [5] AS 'Mai',
    [6] AS 'Juin',
    [7] AS 'Juillet',
    [8] AS 'Août',
    [9] AS 'Septembre',
    [10] AS 'Octobre',
    [11] AS 'Novembre',
    [12] AS 'Décembre'
FROM 
    (SELECT Année, Mois, Ventes FROM Données_de_vente) AS SourceTable
PIVOT
(
    SUM(Ventes)
    FOR Mois IN ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12])
) AS PivotTable;

Cette requête affiche les ventes de chaque mois de chaque année sous forme de colonnes, ce qui permet de voir l’évolution des ventes par année en un coup d’œil.

Agrégation mensuelle des ventes par catégorie

Agrégatez les ventes par catégorie de produits sur une base mensuelle et affichez les ventes mensuelles pour chaque catégorie avec le PIVOT.

SELECT 
    Catégorie,
    [1] AS 'Janvier',
    [2] AS 'Février',
    [3] AS 'Mars',
    [4] AS 'Avril',
    [5] AS 'Mai',
    [6] AS 'Juin',
    [7] AS 'Juillet',
    [8] AS 'Août',
    [9] AS 'Septembre',
    [10] AS 'Octobre',
    [11] AS 'Novembre',
    [12] AS 'Décembre'
FROM 
    (SELECT Catégorie, Mois, Ventes FROM Données_de_vente) AS SourceTable
PIVOT
(
    SUM(Ventes)
    FOR Mois IN ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12])
) AS PivotTable;

Cette requête affiche les ventes mensuelles pour chaque catégorie sous forme de colonnes, ce qui permet d’analyser la performance des ventes par catégorie.

Différences entre PIVOT et UNPIVOT

PIVOT et UNPIVOT sont deux fonctionnalités importantes pour la transformation des données en SQL, mais elles sont utilisées à des fins différentes.

Rôle du PIVOT

Le PIVOT est utilisé pour transformer des données en ligne en données en colonne. Cela permet de visualiser les résultats d’agrégation des données en affichant des valeurs de champ spécifiques sous forme de colonnes.

Exemple d’utilisation du PIVOT

Nous avons présenté un exemple plus haut où les données de vente sont agrégées par mois et affichées en tant que colonnes. Cela permet de rendre les données plus intuitives à comprendre.

Rôle de l’UNPIVOT

L’UNPIVOT est utilisé pour convertir des données en colonne en données en ligne. Cela permet de regrouper des données provenant de plusieurs colonnes en une seule colonne.

Exemple d’utilisation de l’UNPIVOT

Supposons que vous ayez le tableau suivant :

| Année | Janvier | Février | Mars  | Avril  |
|-------|---------|---------|-------|--------|
| 2023  | 2100    | 2900    | 2500  | 3300   |

La requête UNPIVOT suivante convertit ces données en lignes par mois :

SELECT 
    Année,
    Mois,
    Ventes
FROM 
    (SELECT Année, [Janvier], [Février], [Mars], [Avril] FROM Données_de_vente) AS PivotTable
UNPIVOT
(
    Ventes FOR Mois IN ([Janvier], [Février], [Mars], [Avril])
) AS UnpivotTable;

L’exécution de cette requête donne le résultat suivant :

| Année | Mois  | Ventes |
|-------|-------|--------|
| 2023  | Janvier | 2100 |
| 2023  | Février | 2900 |
| 2023  | Mars  | 2500 |
| 2023  | Avril | 3300 |

Différenciation de l’utilisation de PIVOT et UNPIVOT

  • PIVOT : Utilisé lorsque vous souhaitez convertir des données en ligne en données en colonne. C’est efficace pour la visualisation des données et la création de rapports.
  • UNPIVOT : Utilisé lorsque vous souhaitez convertir des données en colonne en données en ligne. C’est efficace pour la normalisation et la reconstitution des données.

Conclusion

Dans cet article, nous avons détaillé comment utiliser la fonctionnalité PIVOT de SQL pour convertir des données en ligne en données en colonne. Le PIVOT est un outil puissant qui améliore la visualisation des données, augmente l’efficacité de l’analyse et simplifie la création de rapports. Nous avons également expliqué les différences entre PIVOT et UNPIVOT et comment les utiliser.

Maîtriser le PIVOT vous permet d’élargir vos capacités d’analyse de données et de gérer les données de manière plus intuitive. Essayez d’appliquer le PIVOT à vos propres données pour voir ses avantages.

Sommaire