Последний месяц в дате

SupremeB

Всем привет.Запрос должен показывать данные только за последний месяц.Сделал следующий запрос
SELECT [<b>1</b>].Филиал, [<b>1</b>].Склад, [Справочник].[Наименование профиля], [Справочник].марка, [Справочник].размер, Sum([Факт продаж МС].[Sum-количество, тн]) AS [Количество, тн], Avg([<b>1</b>]![выручка]/[<b>1</b>]![Sum-количество, тн]) AS [Цена продаж], Max(DatePart("m",[<b>1</b>].[Дата отгрузки])) AS Месяц
FROM ([<b>1</b>] INNER JOIN Справочник1 ON ([<b>1</b>].толщина = Справочник.Толщина) AND …….
WHERE (((Справочник)="1 сорт") AND (([<b>1</b>].[Sum-количество, тн])><b>0</b>))
GROUP BY [<b>1</b>].Филиал, [<b>1</b>].Склад, [Справочник].[Наименование профиля], [Справочник].марка, [Справочник].размер;
Но если допустим в июне не было отгрузки, он берет данные за май, т.к. последний месяц отгрузки определенной номенклатуры был только в мае. А нужно при условии если в июне не было отгрузки сделать пустую ячейку.Что нужно в запрос добавить?
4 ответа

SupremeB

SupremeB,попробуйте RIGHT JOIN, если отгрузки у вас таблице 1.


SupremeB

...Но если допустим в июне не было отгрузки, он берет данные за май, т.к. последний месяц отгрузки определенной номенклатуры был только в мае. А нужно при условии если в июне не было отгрузки сделать пустую ячейку.Что нужно в запрос добавить?
ну вы ж поймите - из "ничего" - неполучится "что-то" - даже "пустая ячейка"надо добавить то из чего эта ячейка будет формироватся - таблицу с месяцами (номер, месяц)и связать её внешним объединением с тем что сейчас есть
select ..., Max(Месяца.НомерМесяца) AS Месяц
FROM Месяца 
left join [<b>1</b>]
 on DatePart("m",[<b>1</b>].[Дата отгрузки])=Месяца.НомерМесяца
...
where Месяца.НомерМесяца < Month(Date())
зычто-то я у вас нигде упоминание года не увидел...


SupremeB

alvk,Не помогло


SupremeB

ё,Сейчас опробую. Год добавлю тоже.