Как получить последние данные за шесть месяцев в sql
Я разрабатываю одну диаграмму на этой диаграмме. Я хочу показать подробности за последние шесть месяцев отдельно. Я хочу показать данные на гистограмме.
Но я не получаю никакого решения. Я немного слаб в sql-запросах.
До сих пор я получил данные за последний месяц. Но я хочу данные за последние шесть месяцев. вот мой код.
- Linq соединяется с двумя значениями
- Создание греческих данных
- Ошибка подключения к SQL Server через псевдоним из локального IIS7
- Производительность кода: SQL Server Query vs C # .Net веб-приложение
- Отображение данных SQL Server с c # на html-страницу
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
что-то вроде этого.
- Пустое значение, вставленное в sql-сервер на asp.net, с обязательным полем проверки подлинности
- Может ли Glimpse предоставлять диагностику при использовании классов пространства имен SqlClient
- Уже открыт считыватель данных, связанный с этой командой. Как это возможно?
- Microsoft.SqlServer.Types в ASP NET Core
- Создание VIEW из нескольких таблиц с различным количеством столбцов
- Избегать инъекции SQL без параметров
- Как ввести значение в веб-форме и сохранить его как числовое значение в SQL Server
- Поиск в базе данных SQL Server по части имен книг
Это назначит дату ровно 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).