Подтвердить что ты не робот

Запрос суммы MYSQL с условием IF

Я создаю запрос для отчета с несколькими условиями 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, а не разбитого по дням.

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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