← Guides

SQL CASE WHEN : catégories, totaux conditionnels et tri personnalisé

Utiliser CASE WHEN pour étiqueter des lignes, produire un rapport façon tableau croisé en une requête et trier selon une priorité métier.

SQL · 6 min de lecture

Par l'équipe éditoriale FormulAI · Relu en octobre 2026

Étiqueter les lignes

CASE évalue les conditions de haut en bas et renvoie la première vraie : l'ordre compte, placez la plus spécifique en premier. Ajoutez toujours un ELSE, sinon les lignes non couvertes valent NULL et disparaissent des regroupements.

SELECT id, montant,
  CASE
    WHEN montant >= 1000 THEN 'Grande'
    WHEN montant >= 200  THEN 'Moyenne'
    ELSE 'Petite'
  END AS taille_commande
FROM commandes;

Totaux conditionnels en une requête

Placer CASE dans SUM produit une colonne par statut ou par année, sans fonction de pivot. C'est l'équivalent SQL de SOMME.SI.ENS, valable sur tous les moteurs. PostgreSQL propose aussi la clause plus courte FILTER (WHERE ...).

SELECT client_id,
  SUM(CASE WHEN statut = 'payee'      THEN montant ELSE 0 END) AS payees,
  SUM(CASE WHEN statut = 'en_attente' THEN montant ELSE 0 END) AS en_attente,
  COUNT(CASE WHEN statut = 'remboursee' THEN 1 END)            AS remboursements
FROM commandes
GROUP BY client_id;

Trier selon une priorité métier

L'ordre alphabétique correspond rarement au travail d'une équipe. Associez chaque valeur à un rang dans ORDER BY pour afficher les tickets urgents d'abord.

SELECT * FROM tickets
ORDER BY CASE priorite
  WHEN 'urgente' THEN 1
  WHEN 'haute'   THEN 2
  WHEN 'normale' THEN 3
  ELSE 4 END, cree_le;

Erreurs fréquentes

CASE WHEN col = NULL ne correspond jamais : utilisez IS NULL. Toutes les branches doivent renvoyer des types compatibles. Évitez enfin de répéter un long CASE dans SELECT, GROUP BY et ORDER BY : calculez-le une fois dans une CTE et réutilisez l'alias. Décrivez vos catégories en une phrase et FormulAI écrit le CASE pour votre moteur.

Comment ce guide a été réalisé

Chaque formule, requête et script de ce guide a été exécuté sur un vrai fichier d'exemple (Excel 365, Google Sheets, PostgreSQL, MySQL ou Python 3) avant publication. Nous documentons les cas limites rencontrés pendant les tests : nombres stockés en texte, mois vides, valeurs NULL. L'IA nous aide à rédiger et traduire ; une personne vérifie chaque exemple et met le guide à jour quand les logiciels évoluent. Une erreur ? Écrivez à contact@formulai-app.com.