Je crée une requête pour un rapport avec plusieurs conditions IF sur le SUM. J'ai des problèmes avec plusieurs conditions IF sur SUM.
Voici la requête:
SELECT SUM(`totalamount`) AS Total,
SUM(`PayPalFee`) AS Fees,
DATE(`TransactionDate`) AS `Day`,
SUM(IF(PaymentType = "Paypal", 1,0)) AS Paypal,
SUM(IF(PaymentType = "check", 1,0)) AS Checks,
SUM(IF(PaymentType = "credit card", 1,0)) AS CreditCard,
COUNT(*) AS Entries
FROM my_table
WHERE TransactionDate between '2011-05-05' AND '2012-01-30'
GROUP BY day
ORDER BY `day` ASC
Cette requête fonctionne très bien.
Lorsque j'essaie d'ajouter l'instruction SUM conditionnelle ci-dessous:
SUM('TotalAmount'(PaymentType = "credit card", 1,0)) AS CreditCardTotal,
Cette instruction IF conditionnelle échoue.
J'ai une colonne appelée "TotalAmount" et une colonne intitulée "PaymentType" Je cherche à créer un SUM des transactions par carte de crédit chaque jour, un SUM des transactions par chèque par jour, un SUM des transactions Paypal par jour ,. J'ai essayé de créer une sous-requête, mais cela renvoie une valeur pour la colonne TotalAmount entière, non ventilée par jour.
Essayez avec un CAS de cette manière:
SUM(CASE
WHEN PaymentType = "credit card"
THEN TotalAmount
ELSE 0
END) AS CreditCardTotal,
Doit donner ce que vous cherchez ...
Que dis-tu de ça?
SUM(IF(PaymentType = "credit card", totalamount, 0)) AS CreditCardTotal