как я могу подсчитать ежемесячные заказы с помощью SQL и функции Month?

#sql #asp.net

#sql #asp.net

Вопрос:

мне нужно подсчитать, сколько заказов было обработано в течение года, однако у меня есть поле с именем datePrepped, в котором у меня есть дата, поэтому я использую функцию Month(), чтобы получить месяц, который мне нужен для всех месяцев года

я не хочу группировать, мне нужно, чтобы выходные данные сохранялись в переменных, поэтому я использую КАК январь, так и февраль и т.д. однако я получаю эту ошибку [Microsoft] [ODBC Microsoft Access Driver] Слишком мало параметров. Ожидаемый 1.

     sqlString = "SELECT " amp; _
   "SUM(IIf(Month(r.datePrpped)='1', 1, 0)) AS Jan," amp; _
   "SUM(IIf(Month(r.datePrpped)='2', 0)) AS Feb," amp; _
   "SUM(IIf(Month(r.datePrpped)='3', 0)) AS Mar," amp; _
   "SUM(IIf(Month(r.datePrpped)='4', 0)) AS Apr," amp; _
   "SUM(IIf(Month(r.datePrpped)='5', 0)) AS May " amp; _
   "FROM OrderControl AS r;"
  

Необходим пример вывода

    <%=MyRecordset("Jan")%> HTML output 500
    <%=MyRecordset("Feb")%> HTML output 800
  

Ответ №1:

В большинстве '1' выражений отсутствуют iif() s:

 SELECT SUM(IIf(Month(r.datePrpped) = 1, 1, 0)) AS Jan,
       SUM(IIf(Month(r.datePrpped) = 2, 1, 0)) AS Feb,
       SUM(IIf(Month(r.datePrpped) = 3, 1, 0)) AS Mar,
       SUM(IIf(Month(r.datePrpped) = 4, 1, 0)) AS Apr,
       SUM(IIf(Month(r.datePrpped) = 5, 1, 0)) AS May
FROM OrderControl AS r;
  

MONTH() Функция возвращает число, поэтому уместно, чтобы значение сравнения было числом, а не строкой.