Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Повторяющиеся поля в отчете
 
 автор: Andrey410   (07.02.2010 в 16:04)   личное сообщение
 
 

День добрый, подскажите пожалуйста.
Есть запрос формирующий отчет продаж за 1 день. Очень частая ситуация когда 1 человек продал товар по одной и той же цене несколько раз за день, и в отчете по запросу выводятся однотипные поля по этому человеку типа:
Фамилия цена количество
Иванов 20 10
Иванов 20 20
Иванов 20 30
Хотелось бы объединить такого рода записи, сложив количество, чтобы в отчете в итоге увидеть:
Иванов 20 60
При этом нужно учитывать, что объединяться должны только записи с одинаковой ценой, все остальные записи на этого же человека, но с другой ценой выводятся сами по себе. И вот ещё, как поставить условием отбора в запросе текущую дату понятно, а вот как сделать чтобы условием отбора являлась последняя имеющаяся дата?

  Ответить  
 
 автор: ShadowOfSun   (07.02.2010 в 16:56)   личное сообщение
 
 

Элементарно.
1. В запросе делаешь группировку
А в столбце количество ставишь Sum
2. Max попробуй

  Ответить  
 
 автор: Andrey410   (07.02.2010 в 20:37)   личное сообщение
14 Кб.
 
 

Что то не выходит у меня... И если честно непонятно что в данном случае даёт группировка в запросе. Если Вам не сложно покажите на моём примере как правильно. Все записи в примере намеренно сделал вчерашним числом.

  Ответить  
 
 автор: snipe   (07.02.2010 в 21:46)   личное сообщение
 
 

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

  Ответить  
 
 автор: Andrey410   (08.02.2010 в 00:17)   личное сообщение
 
 

Блин, я наверное туплю!
1. Date()-2 вроде это значит что нужно вернуть текущую дату минус 2 дня? А как быть если последняя запись была 3 или 7 или 1 день назад? Требуется ведь возвращать дату последней записи без жесткой привязки...
2. С объединением записей тоже непонятно. Создаю запрос, вставляю код, всё как было так и есть. Все записи с одинаковой фамилией и одинаковой ценой идут построчно и не думают объединяться и суммироваться Тут ведь условие избавиться от записей паразитов, продал человек за 1 день 8 раз одно и тоже наименование товара в разном количестве по одной и той же цене и сейчас в отчёте выводится 8 одинаковых строчек с фамилией ценой и количеством, а хотелось бы получить всего 1 строчку с фамилией ценой и суммированным количеством проданного товара, притом что продажи не совпадающие по фамилии и цене объединяться не должны. Вот как то так... В общем мозг закипает

  Ответить  
 
 автор: kot_k_k   (08.02.2010 в 09:45)   личное сообщение
 
 

че кипить мозг???

вот твой запрос - чуть переделанный - по [Сумме] нужна не группировка а 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;

  Ответить  
 
 автор: ShadowOfSun   (08.02.2010 в 13:02)   личное сообщение
14 Кб.
 
 

Ниче если в два запроса?


Сразу не заметил - в поле Сумма вместо группировки тоже ставишь Sum

  Ответить  
 
 автор: kot_k_k   (08.02.2010 в 13:10)   личное сообщение
 
 

у него последняя дата для каждого чела разная - нужно добавить группировку по челам в первый запрос.

  Ответить  
 
 автор: ShadowOfSun   (08.02.2010 в 13:27)   личное сообщение
18 Кб.
 
 

Ну тогда так

  Ответить  
 
 автор: Andrey410   (08.02.2010 в 20:23)   личное сообщение
 
 

Огромное всем спасибо! Выручили
Но один непонятный момент всё таки остался блин. Ну как сделать чтобы в запросе и соответственно в отчете по нему цеплялась только та дата которая была последней. Отчет предназначен для просмотра ТОЛЬКО ОДНОГО текущего дня, ну или дня последнего внесения данных в таблицу. Никакие другие даты и соответствующие им данные отображаться не должны.

  Ответить  
 
 автор: ShadowOfSun   (08.02.2010 в 20:37)   личное сообщение
 
 

Я типа не понял.
А чем тебя первый вариант не устраивает.
Для наглядности я даже даты поменял

  Ответить  
 
 автор: Andrey410   (08.02.2010 в 21:52)   личное сообщение
 
 

Прошу прощения, протупил
Зациклился на сортировке записей во 2 твоём примере, а первый не посмотрел.
Всё нормально заработало. Ещё раз спасибо

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList