Как получить последние данные за шесть месяцев в sql

Я разрабатываю одну диаграмму на этой диаграмме. Я хочу показать подробности за последние шесть месяцев отдельно. Я хочу показать данные на гистограмме.

Но я не получаю никакого решения. Я немного слаб в sql-запросах.

До сих пор я получил данные за последний месяц. Но я хочу данные за последние шесть месяцев. вот мой код.

DECLARE @StartDate DATETIME, @EndDate DATETIME SET @StartDate = DATEADD(mm, DATEDIFF(mm,0,getdate())-1, 0) SET @EndDate = DATEADD(mm, 1, @StartDate) SELECT sum(quantity) FROM RS_Sell_Order_Master as s left outer join RS_Sell_Order_Mapping as sm on sm.sell_order_no = s.sell_order_no left outer join RS_GIN_Master as GIN on gin.product_id = sm.product_id WHERE del_date BETWEEN @StartDate AND @EndDate 

Я хочу, чтобы o / p последних шести месяцев, как это, предположим, я продаю 10 штук в прошлом месяце и 20, превалирующих в этом месяце, и я не продавал раньше этого. Так что o / p должен быть

 null null null null 10 20 

что-то вроде этого.

Это назначит дату ровно 6 месяцев назад – кажется, нет причин, по которым вам нужно вернуться к нулевой дате DATTIME SqlServer:

 SET @StartDate = DATEADD(mm, -6, CURRENT_TIMESTAMP); 

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

Предполагая, что вы хотите, чтобы месяц выравнивался от первого до конца каждого месяца и предполагал, что у вас есть нулевые значения, но все же хотите показать данные, которые нам понадобятся для создания недостающих месяцев (например, с рекурсивным CTE)

 DECLARE @StartDate DATETIME; SET @StartDate = DATEADD(mm, -6, CURRENT_TIMESTAMP); WITH cte AS ( SELECT 0 AS TheMonth UNION ALL SELECT TheMonth + 1 FROM cte WHERE TheMonth < 5 ) SELECT sum(quantity) FROM cte LEFT OUTER JOIN RS_Sell_Order_Master as s ON del_date >= DATEADD(MM, cte.TheMonth, @StartDate) AND del_date < DATEADD(MM, cte.TheMonth + 1, @StartDate) -- Other Joins here GROUP BY cte.TheMonth ORDER BY cte.TheMonth; 

SqlFiddle здесь

общее количество предметов в месяц может быть рассчитано как

 select sum(items),left(date,6)+'01' from yourTable group by left(date,6) 

предполагая, что ваша дата в формате 112 …. и имеет тип varchar (8).

  • SQL-соединение принудительно закрыто
  • Почему SQL Server не распознается, хотя у меня есть ссылка на DAL05.dll?
  • SQL Query Чтобы найти поезд между станциями
  • Проблема подключения к базе данных - пользовательский экземпляр и проблема с Entity Framework
  • Как настроить SQL Server для работы с ASP.NET MVC с проверкой подлинности Windows?
  • Отображение нескольких изображений в одной ячейке шаблона данных
  • Когда использовать метку времени в sql 2008?
  • ASP-приложение вызывает ошибку 500 и заставляет сервер часто останавливаться
  • SQL-данные не получены в Unicode хинди
  • Обработка конфиденциальных данных в веб-приложении
  • Как долго должен быть тайм-аут connectionString в приложениях ASP.NET? (SqlClient)
  • Interesting Posts

    SQL, чтобы получить количество членов в каждой группе

    сколько источников данных может обрабатывать холодную работу

    Ошибка при сохранении значений в таблице базы данных SQL

    Как показать динамический столбец с помощью сводной таблицы

    как экспортировать данные sql в csv с помощью bcp

    Формат Reporting Services для основных деталей

    Есть ли способ заставить триггер запускать в операторе обновления несколько строк?

    Как вставить внешний ключ с помощью Sub-SELECT в SQL Server

    Сгенерировать инструкцию CREATE TABLE из произвольного SQL-запроса

    Выполните правое внешнее соединение с условием для левой таблицы

    Как выполнить массовую вставку в SQL Server из Excel по запросу

    Как сохранить файл в базе данных SQL Server, если есть путь к файлу?

    Фильтрация строк на основе определенных условий

    Получите количество дней в месяц – mdx

    Как работать с несколькими часовыми поясами в приложениях, которые хранят даты и время?

    Давайте будем гением компьютера.