|
|
|
| День добрый, подскажите пожалуйста.
Есть запрос формирующий отчет продаж за 1 день. Очень частая ситуация когда 1 человек продал товар по одной и той же цене несколько раз за день, и в отчете по запросу выводятся однотипные поля по этому человеку типа:
Фамилия цена количество
Иванов 20 10
Иванов 20 20
Иванов 20 30
Хотелось бы объединить такого рода записи, сложив количество, чтобы в отчете в итоге увидеть:
Иванов 20 60
При этом нужно учитывать, что объединяться должны только записи с одинаковой ценой, все остальные записи на этого же человека, но с другой ценой выводятся сами по себе. И вот ещё, как поставить условием отбора в запросе текущую дату понятно, а вот как сделать чтобы условием отбора являлась последняя имеющаяся дата? | |
|
| |
|
|
|
| Элементарно.
1. В запросе делаешь группировку
А в столбце количество ставишь Sum
2. Max попробуй | |
|
| |
|
14 Кб. |
|
| Что то не выходит у меня... И если честно непонятно что в данном случае даёт группировка в запросе. Если Вам не сложно покажите на моём примере как правильно. Все записи в примере намеренно сделал вчерашним числом. | |
|
| |
|
|
|
| SELECT расход.количество, Sum([количество]*[стоимость]) AS Сумма, [Фамилия] & " " & Mid([Имя],1,1) & "." & Mid([Отчество],1,1) & "." AS Выражение1
FROM расход INNER JOIN [Klienty FIO] ON расход.[ID клиента] = [Klienty FIO].[ID клиента]
WHERE (((расход.дата)=Date()-2))
GROUP BY расход.количество, [Фамилия] & " " & Mid([Имя],1,1) & "." & Mid([Отчество],1,1) & ".";
с датой повнимательнее а то у меня уже 8 а у вас я так понимаю еще 7 | |
|
| |
|
|
|
| Блин, я наверное туплю!
1. Date()-2 вроде это значит что нужно вернуть текущую дату минус 2 дня? А как быть если последняя запись была 3 или 7 или 1 день назад? Требуется ведь возвращать дату последней записи без жесткой привязки...
2. С объединением записей тоже непонятно. Создаю запрос, вставляю код, всё как было так и есть. Все записи с одинаковой фамилией и одинаковой ценой идут построчно и не думают объединяться и суммироваться Тут ведь условие избавиться от записей паразитов, продал человек за 1 день 8 раз одно и тоже наименование товара в разном количестве по одной и той же цене и сейчас в отчёте выводится 8 одинаковых строчек с фамилией ценой и количеством, а хотелось бы получить всего 1 строчку с фамилией ценой и суммированным количеством проданного товара, притом что продажи не совпадающие по фамилии и цене объединяться не должны. Вот как то так... В общем мозг закипает | |
|
| |
|
|
|
| че кипить мозг???
вот твой запрос - чуть переделанный - по [Сумме] нужна не группировка а Sum (выделил), по этому и вылазит каджая строка!!!
SELECT [Klienty FIO].Фамилия, [Klienty FIO].Имя, [Klienty FIO].Отчество, Sum(расход.количество) AS [Sum-количество], расход.стоимость, Sum([количество]*[стоимость]) AS Сумма, расход.дата
FROM расход INNER JOIN [Klienty FIO] ON расход.[ID клиента] = [Klienty FIO].[ID клиента]
GROUP BY [Klienty FIO].Фамилия, [Klienty FIO].Имя, [Klienty FIO].Отчество, расход.стоимость, расход.дата
ORDER BY [Klienty FIO].Фамилия, [Klienty FIO].Имя, расход.стоимость DESC; | |
|
| |
|
14 Кб. |
|
| Ниче если в два запроса?
Сразу не заметил - в поле Сумма вместо группировки тоже ставишь Sum | |
|
| |
|
|
|
| у него последняя дата для каждого чела разная - нужно добавить группировку по челам в первый запрос. | |
|
| |
|
18 Кб. |
|
| Ну тогда так | |
|
| |
|
|
|
| Огромное всем спасибо! Выручили
Но один непонятный момент всё таки остался блин. Ну как сделать чтобы в запросе и соответственно в отчете по нему цеплялась только та дата которая была последней. Отчет предназначен для просмотра ТОЛЬКО ОДНОГО текущего дня, ну или дня последнего внесения данных в таблицу. Никакие другие даты и соответствующие им данные отображаться не должны. | |
|
| |
|
|
|
| Я типа не понял.
А чем тебя первый вариант не устраивает.
Для наглядности я даже даты поменял | |
|
| |
|
|
|
| Прошу прощения, протупил
Зациклился на сортировке записей во 2 твоём примере, а первый не посмотрел.
Всё нормально заработало. Ещё раз спасибо | |
|
| |