web-dev-qa-db-ja.com

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」という列がある、。サブクエリを作成しようとしましたが、これはTotalAmount列全体の値を返しますが、日ごとには分類されていません。

34
Matthew Colley

このように [〜#〜] case [〜#〜] で試してください:

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

あなたが探しているものを与える必要があります...

78
aleroot

これはどう?

SUM(IF(PaymentType = "credit card", totalamount, 0)) AS CreditCardTotal
42
Scott Hunter