Pivoter les 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 les lignes en colonnes. C’est la version SQL d’un tableau croisé dynamique.
Supposons que sales contienne des lignes telles que (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 monthLe compartiment GROUP BY que voit chaque SUM(CASE …) correspond aux lignes d’un mois ; le CASE sélectionne la partie correspondant à un produit.
Défi
FacileTables et colonnes disponibles :
sales:month,product,units
Transformez les données afin que chaque ligne corresponde à un month avec ces colonnes :
monthapples: total deunitspour le produit'apples'ce mois-làbananas: même chose pour'bananas'cherries: même chose pour'cherries'total: total deunitspour tous les produits ce mois-là
Retournez uniquement les mois dont le total est au moins égal à 20. Triez par month.
Essayez vous-même
SELECT month,
-- un SUM(CASE ...) par produit, plus le total
FROM sales
GROUP BY month
-- filtrer les mois avec total >= 20
ORDER BY month
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
1Logique conditionnelle
CASE WHENCASE dans ORDER BYCOALESCE pour les NULLNULLIF et IIFRécapitulatif - Présence3Agrégation conditionnelle
COUNT avec CASESUM avec CASEPivoter les lignes en colonnesRécapitulatif - Sources de traficEntraînez-vous par vous-même : Playground SQL