SQL — СУММА ПО ДАТЕ и ГОДУ

#mysql #sql #sql-server

Вопрос:

Я пытаюсь написать живой репортаж. На данный момент я могу подводить итоги по месяцам MONTH(DATEADD(MM, -1, GETDATE())) , но это добавляет все продажи в ноябре. Мне нужно, чтобы он суммировался в зависимости от месяца и года с текущей даты -1 месяц.

P. S Я не могу сделать пункт «где YEAR(GETDATE()) = 2021 «, так как это должен быть живой отчет на случай, если мы захотим запустить его за последние 14 месяцев.

SQL

 SUM( CASE WHEN COALESCE(month(CONVERT(date,CONVERT(varchar(10),salesdwec.shipdate,120),101)), 0) = month(dateadd(mm, -1,getdate())) THEN  salesdwec.orderquantity  ELSE 0 END) AS 'PIROIR_MONTH'  

Комментарии:

1. MySQL lt;gt; SQL Server — пожалуйста, исправьте свои теги.

2. Пожалуйста, предоставьте примерные данные и желаемые результаты, чтобы мы могли визуализировать ваши требования.

3. Пожалуйста, также покажите весь ваш запрос, включая ваше GROUP BY предложение

4. Привет @Жанпьер, Если мой ответ вам полезен, вы можете принять его как ответ( нажмите на галочку рядом с ответом, чтобы переключить его с серого на заполненный.). Это может быть полезно для других членов сообщества. Спасибо.

Ответ №1:

Если вы работаете на SQL-сервере, то это должно сработать.

 SELECT YEAR(salesdwec.shipdate) 'Year',MONTH(salesdwec.shipdate) 'Month',SUM(salesdwec.orderquantity) FROM salesdwec WHERE DATEDIFF(MONTH,salesdwec.shipdate,GETDATE()) = 1 GROUP BY YEAR(salesdwec.shipdate) ,MONTH(salesdwec.shipdate)  

Как Dale K уже упоминалось, было бы полезно, если бы вы предоставили некоторые примеры данных.

Редактировать:

Запрос выведет столбец Month и Year вместе с количеством заказа. В случае, если вам нужно только количество заказа, вы можете использовать это.

 SELECT SUM(salesdwec.orderquantity) FROM salesdwec WHERE DATEDIFF(MONTH,salesdwec.shipdate,GETDATE()) = 1