Sql Comment Appliquer Un Where a Un Sum

Yo,

Si comme moi, vous avez besoin de réaliser un SUM en sql, dans mon cas pour calculer un chiffre d’affaires de manière détaillée. Vous aimeriez sûrement pouvoir appliquer un WHERE à un SUM sans perdre vos autres filtres.

Prenons une DB d’exemple:

id | facture_id | montant | active | paid
 1 |          1 |     300 |      1 |    1
 2 |          3 |    1000 |      0 |    1
 3 |          5 |    4000 |      1 |    1
 4 |          6 |     200 |      0 |    0
 5 |          7 |     150 |      1 |    0

On va faire en sorte de récupéré:

SUM est donc une fonction SQL qui prend en paramètre une column. On va pouvoir y appliquer un CASE.

Un case se compose comme ceci:

case [column] when [votre/vos condition(s)] then [la valeur] else [valeur défaut] end
ou
case when [votre/vos condition(s)] then [la valeur] else [valeur défaut] end
SELECT 
SUM( case when active = 1 and paid = 1 then montant else 0 end) actives_paid,
SUM( case when active = 0 and paid = 1 then montant else 0 end) n_actives_paid,
SUM( case paid when 0 then montant else 0 end) n_paid
from factures

Vous pouvez bien sûr appliquer d’autre condition via le WHERE après le FROM et même des GROUP BY.

Voilà voilà!