Menu
Coddy logo textTech

Pivoter des lignes en colonnes

Fait partie de la section Au-delà des bases du Journey SQL de Coddy — leçon 14 sur 27.

Combinez l'agrégation conditionnelle avec GROUP BY pour transformer des lignes en colonnes. C'est la version SQL d'un tableau croisé dynamique de tableur.

Supposons que sales contienne des lignes comme (month, product, units). Pour voir une ligne par mois avec une colonne par produit :

SELECT
    month,
    SUM(CASE WHEN product = 'A' THEN units ELSE 0 END) AS product_a,
    SUM(CASE WHEN product = 'B' THEN units ELSE 0 END) AS product_b
FROM sales
GROUP BY month

Le regroupement GROUP BY que chaque SUM(CASE …) voit correspond aux lignes d'un mois ; le CASE sélectionne la tranche pour un produit.

challenge icon

Défi

Facile

Tables et colonnes disponibles :

  • <strong>sales</strong> : <strong>month</strong>, <strong>product</strong>, <strong>units</strong>

Pivotez les données de sorte que chaque ligne représente un month avec ces colonnes :

  • month
  • apples : total des units pour le produit 'apples' ce mois-là
  • bananas : idem pour 'bananas'
  • cherries : idem pour 'cherries'
  • total : total des units pour tous les produits ce mois-là

Retournez uniquement les mois dont le total est d'au moins 20. Triez par month.

Aide-mémoire

Utilisez l'agrégation conditionnelle avec GROUP BY pour pivoter des lignes en colonnes :

SELECT
    month,
    SUM(CASE WHEN product = 'A' THEN units ELSE 0 END) AS product_a,
    SUM(CASE WHEN product = 'B' THEN units ELSE 0 END) AS product_b,
    SUM(units) AS total
FROM sales
GROUP BY month
HAVING SUM(units) >= threshold
ORDER BY month

Chaque SUM(CASE …) additionne uniquement les lignes correspondant à ce produit au sein de chaque groupe GROUP BY.

Essayez vous-même

SELECT month,
       -- un SUM(CASE ...) par produit, plus le total
FROM sales
GROUP BY month
-- filtrer pour les mois avec total >= 20
ORDER BY month
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Au-delà des bases