IF条件付きMYSQL Sumクエリ

SUMに複数のIF条件を持つレポートのクエリを作成しています。SUMに複数のIF条件をつけると問題が発生するのですが、どうすればよいでしょうか?

以下、クエリです:

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

このクエリは問題なく動作します。

以下の条件付きSUM文を追加しようとすると:

 SUM('TotalAmount'(PaymentType = "credit card", 1,0)) AS CreditCardTotal,

この条件付きIF文はフェイルアウトします。

私は 'TotalAmount' というカラムと 'PaymentType' というカラムを持っており、各日ごとのクレジットカード取引のSUM、各日ごとの小切手取引のSUM、各日ごとのPaypal取引のSUM、を作成したいと考えています。 サブクエリを作成しようとしましたが、これはTotalAmountカラム全体の値を返すもので、日ごとに分解されるものではありません。

ソリューション

このようにCASEで試してみてください.

SUM(CASE 
    WHEN PaymentType = "credit card" 
    THEN TotalAmount 
    ELSE 0 
END) AS CreditCardTotal,

あなたが探しているものを与えてくれるはずです ...

解説 (6)

こんなのはどうでしょう。

SUM(IF(PaymentType = "credit card", totalamount, 0)) AS CreditCardTotal
解説 (2)