Запрос суммы MYSQL с условием IF - PullRequest
33 голосов
/ 04 января 2012

Я создаю запрос для отчета с несколькими условиями IF в SUM.У меня проблемы с несколькими условиями IF в SUM.

Вот запрос:

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». Я рассчитываю создать сумму транзакций по кредитным картам за каждый день, сумму транзакций по чекам за каждый день, суммуPayPal транзакций на каждый день.Я попытался создать подзапрос, но при этом возвращается значение для всего столбца TotalAmount, а не по дням.

Ответы [ 2 ]

75 голосов
/ 04 января 2012

Попробуйте с CASE следующим образом:

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

Должен дать то, что вы ищете ...

40 голосов
/ 04 января 2012

Как насчет этого?

SUM(IF(PaymentType = "credit card", totalamount, 0)) AS CreditCardTotal
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...