В Access я бы сделал это с несколькими запросами.
Это было бы проще сделать, если бы у вас был идентификатор в строках (например, автонумерация).
Первый запрос определяет улицы, которые должны быть суммированы.
запрос: SumTheseStreets
SELECT
Street,
ZIP,
Place,
Sum(Square) AS SumSquare
FROM Table1
GROUP BY Street, ZIP, Place
HAVING sum(Square) < 1000
Обратите внимание на HAVING
, который немного похож на WHERE
Предложение, которое применяется за пределами GROUP BY
или SUM
Второй запрос идентифицирует другие строки (примечания к этому ниже):
запрос: StreetsNotSummed
SELECT
Street,
ZIP,
Place,
Square AS SumSquare
FROM Table1
LEFT JOIN SumTheseStreets ON Table1.Street = SumTheseStreets.Street AND Table1.ZIP = SUmTheseStreets.ZIP AND Table1.Place = SumTheseStreets.Place
WHERE SumTheseStreets.Street IS NULL;
Пара замечаний:
- Я назвал поле SumSquare, потому что хочу, чтобы оно совпадало с именем поля SumSquare в первом запросе
- В нем используетсяпервый запрос в качестве одной из входных «таблиц»
- При этом используется LEFT JOIN, что означает «дать мне все строки в первой таблице (table1), и если какие-либо строки во второй таблице (SumTheseStreets) совпадают,также добавьте их.
- , но затем он отфильтрует строки, которые действительно соответствуют.
Так что в этом запросе перечислены только улицы, которые вы НЕ хотите суммировать.
Итак, теперь вам нужен третий запрос. Он просто включает все строки в обоих запросах. Я не слишком удивленСинтаксис Access на этом, но есть мастер объединения запросов, если это не так.
Запрос: TheAnswerRequired
SELECT
Street,
ZIP,
Place,
SumSquare
FROM SumTheseStreets
UNION
SELECT
Street,
ZIP,
Place,
SumSquare
FROM StreetsNotSummed
(может потребоваться UNION ALL
)
Удачи.