2015-09-01 3 views
0

В MS Access 2010, предположим, что запрос содержит следующие результаты:Access Report Подгруппа суммированием

Date  Activity  Hours 
1.9.  Reading  1 
1.9.  Writing  2 
2.9.  Reading  1 
3.9.  Talking  1 
4.9.  Reading  3 

1.10. Talking  2 
1.10. Writing  1 
2.10. Reading  2 
3.10. Talking  2 
4.10. Reading  1 

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

Month   Activity   Hours 
September  Reading    5 
       Writing    2 
       Talking    1 

October   Reading    3 
       Writing    1 
       Talking    4 

с помощью мастера я чесотки, чтобы получить отчет, который выглядит как

Month   Activity   Hours 
September  Reading    1 
       Reading    1 
       Reading    3 
       Writing    2 
       Talking    1 

October   Reading    2 
       Reading    1 
       Writing    1 
       Talking    2 
       Talking    2 

что почти то, что я хотел бы иметь, но ..?

Я попытался = сумма (часы), но тогда все поля «Часы» просто содержат общую сумму всех часов, и я все еще получаю несколько строк для одного и того же вида деятельности.

Фактически отчет более сложный. В форме до отчета пользователь может ввести диапазон дат (например, с 1 сентября по 30 октября). Отчет должен просуммировать весь диапазон времени и не распадаются на месяцы, то есть:

Date range  Activity   Hours 
9/1 - 10/30  Reading    8 
       Writing    3 
       Talking    5 

ответ

0

Создание запроса с помощью SQL, как это:

SELECT MonthName(Month([Date])), Activity, SUM(Hours) 
FROM yourTable 
WHERE [Date] >= xxx AND [Date] <= yyy 
GROUP BY MonthName(Month([Date])), Activity 

Ключевым элементом является предложения GROUP BY , он суммирует количество часов в месяц + активность.

Затем создайте отчет по этому запросу.

Кстати, это нехорошо вызывать столбец «Дата», это зарезервированное слово в Access.

+0

Да, это решение работает в простом примере. В моей реальной БД вещи сложнее. До отчета я показываю маску, в которой пользователь может выбрать диапазон дат (например, 2.2.2015 - 5.5.2015). Я передаю этот диапазон дат в качестве фильтра для отчета, который отлично работает. Теперь мне нужно каким-то образом включить этот диапазон дат в предложение GROUP BY ...? Или я могу как-то сказать это GROUP BY Date, просто игнорируя содержание и рассматривая все Даты? – Batox

+0

и да, в реальном DB имя поля «Eingang», а не «Date» :) – Batox

+0

Это хорошо. :) У вас может быть предложение WHERE в запросе GROUP BY, как в обычном запросе. См. Править. xxx и yyy должны, вероятно, ссылаться на поля в вашей форме фильтра, поэтому он может работать как источник записи для отчета. – Andre