#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