MySQL с использованием Sum и Case
Я пытаюсь создать GridView с помощью ASP.NET подключение к базе данных MySQL. Данные отображаются, как показано ниже.
BusinessUnit OrderDate Canceled
UnitA 1/15/2013 N
UnitA 10/1/2013 N
UnitB 10/15/2013 N
UnitB 10/22/2013 N
UnitB 10/22/2013 N
основываясь на записях выше, я хотел бы, чтобы результат выглядел как ниже
BusinessUnit TodaysOrders ThisMonthsOrders ThisYearsOrders
UnitA 0 1 2
UnitB 2 3 3
мой текущий код ниже. Это дает мне ошибку (что-то о DatabaseName.сумма не существует. Проверьте Раздел "синтаксический анализ и разрешение имени функции"... )
Select
SUM (CASE WHEN (OrderDate)=DATE(NOW()) THEN 1 ELSE 0 END) AS TodaysOrders,
SUM (CASE WHEN YEAR(OrderDate) = YEAR(CURDATE()) AND MONTH(OrderDate) = MONTH(CURDATE()) THEN 1 ELSE 0 END) AS ThisMonthsOrders,
SUM (CASE WHEN YEAR(main_order_managers.creation_date) = YEAR(CURDATE()) THEN 1 ELSE 0 END) AS ThisYearsOrders
код
FROM OrderTable WHERE OrderTable.Canceled. <> 'Y';
случай суммы самая лучшая польза здесь?
1 ответов
ошибка вызвана пробелом между именем функции и скобками
SUM (CASE WHEN ...
^^
подробнее синтаксический анализ и разрешение имен функций
попробовать
SELECT BusinessUnit,
SUM(CASE WHEN OrderDate = CURDATE() THEN 1 ELSE 0 END) TodaysOrders,
SUM(CASE WHEN DATE_FORMAT(OrderDate, '%Y%m') = DATE_FORMAT(CURDATE(), '%Y%m') THEN 1 ELSE 0 END) ThisMonthsOrders,
SUM(CASE WHEN YEAR(OrderDate) = YEAR(CURDATE()) THEN 1 ELSE 0 END) ThisYearsOrders
FROM OrderTable
WHERE Canceled <> 'Y'
GROUP BY BusinessUnit
здесь SQLFiddle демо