powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как правильно сгруппировать?
10 сообщений из 10, страница 1 из 1
Как правильно сгруппировать?
    #32238698
Yur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Yur
Гость
Извините за чайнический вопрос:
Есть таблица с тремя полями: Дата прихода ТМЦ, Склад, Номер ТМЦ
Нужно получить информацию о дате последнего прихода ТМЦ на склад.
То есть нужно выбрать максимальную дату по ТМЦ и складу.
Вариант
Select Max(Data), Sklad, N_TMC
...
Group by Sklad, N_TMC;

Не подходит, поскольку на разных складах могут храниться одинаковые ТМЦ, а такая группировка одинаковые ТМЦ исключает.

Подскажите, пожалуйста, как правильно сгруппировать?
...
Рейтинг: 0 / 0
Как правильно сгруппировать?
    #32238709
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Я не знаю, что такое ТМЦ и почему такая группировка одинаковые ТМЦ исключает, но мне кажется, что в этом селекте все правильно.
...
Рейтинг: 0 / 0
Как правильно сгруппировать?
    #32238714
Фотография Varan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если смысл в том, чтобы узнать дату последнюю дату прихода конкретной ТМЦ на Любой склад, убрать код склада из условия в группировке?

Select Max(Data), Sklad, N_TMC
...
Group by N_TMC;
...
Рейтинг: 0 / 0
Как правильно сгруппировать?
    #32238891
Yur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Yur
Гость
ТМЦ - суть товарно-материальная ценность, то бишь нечто хранящееся на складе, имеющее ценность и свой уникальный номер (который и хранится в этой таблице). На каждом из складов ТМЦ повторяются только по дате поступления, а на разных складах могут храниться одинаковые.

Нужно выбрать последнюю дату поступления каждой ТМЦ на каждый склад.

Смысл убрать поле из группировки есть только для склада,
то есть при прочих равных написать

Group by Sklad;

, однако при этом ацесс начинает ругаться, поскольку группировка некорректна для поля N_TMC.
Вылезает:

"Попытка выполнить запрос, который не включает указанное выражение 'N_TMC' как часть статистической функции или группы."

А как сделать, чтобы он так не ругался?
...
Рейтинг: 0 / 0
Как правильно сгруппировать?
    #32238901
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Одно из двух. Либо груп бай ТМЦ, либо вообще это поле убрать. Ну, или какой-нибудь First(ТМЦ).
...
Рейтинг: 0 / 0
Как правильно сгруппировать?
    #32238906
Yur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Yur
Гость
А что есть first() (извините, не знаю где мануал посмотреть)
...
Рейтинг: 0 / 0
Как правильно сгруппировать?
    #32238922
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Если есть группа записей, в которой некоторое поле через всю группу имеет одинаковое значение (т.е. группировка сделана по этому полю), то спрашивается: а для остальных полей какое значение показывать? Пример:

A B
1 2
1 8
1 9
4 2
4 3
4 4
4 5

Если сделать group by A, то будет нечто такое:

A B
1 ?
4 ?

Все эти First, Last, Max, Sum и т.д. предназначены для того, чтобы поставить что-то на место вопросительного знака, т.е. как-то получить значение на основании тех данных, которые есть в группе. Например:

Если поставить Min:
A B
1 2
4 2

Если поставить Max:
A B
1 9
4 5

Если поставить Sum:
A B
1 19
4 14

First и Last использовать не рекомендуется, если у исходного запроса не задана сортировка.

Выбор зависит от логики задачи.
...
Рейтинг: 0 / 0
Как правильно сгруппировать?
    #32238932
Yur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Yur
Гость
Уважаемый, Владимир Саныч (и остальные товариши)!

Ишак я паршивый, смиренно прошу вашего прощения, поскольку мой же собственный запрос (первоначальный вариант) действительно все правильно выбирает!

Глубокий экскъюз за украденное время
...
Рейтинг: 0 / 0
Как правильно сгруппировать?
    #32238943
Фотография Varan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yur
Врешь, работает вот это,
SELECT Prihod.Склад, Max(Prihod.Дата) AS Max_Дата
FROM Prihod
GROUP BY Prihod.Склад;
а с кодом ТМЦ не работает
...
Рейтинг: 0 / 0
Как правильно сгруппировать?
    #32238947
Фотография Varan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, все верно :SELECT Prihod.Склад, Max(Prihod.Дата) AS Max_Дата, Prihod.ТМЦ
FROM Prihod
GROUP BY Prihod.Склад, Prihod.ТМЦ;
сам я ишак, что повелся на такое :-)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как правильно сгруппировать?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]