Существует два подхода к этой проблеме:
- Создание 2 запросов, 1 подготовка результата и 1 выполнение обновления, где
- Разбор с использованием VBA.
Я собираюсь поделиться вторым подходом.
Первый запрос - это, по сути, ваш текущий запрос, преобразованный в запрос SELECT
, удалена только таблица, которую вы обновляете
Query Query1:
SELECT
Sum( IIF ( ImportedTRX.Frequency <=124 , 1,0 ) ) As TRX900
,
Sum( IIF ( ImportedTRX.Frequency >=512 , 1,0 ) ) As TRX1800,
Cells.ID
FROM
(
Sites INNER JOIN Cells ON Sites.ID = Cells.SiteID
),
ImportedTRX INNER JOIN ActiveStatus ON ImportedTRX.[Active Status] = ActiveStatus.Status
WHERE
(
ImportedTRX.[cell name]=[Sites].[SiteID] & [Cells].[Cell_Order]
AND
ActiveStatus.YesNo=True
)
GROUP BY
Cells.ID
;
Затем мы собираемся обновить таблицу, используя DLookUp
и выполняя запросы из этого запроса:
Query Query2:
UPDATE Cells_2G
SET
Cells_2G.TRX900= DLookUp("TRX900", "Query1", "ID = " & [Cell ID]),
Cells_2G.TRX1800= DLookUp("TRX1800", "Query1", "ID = " & [Cell ID])
Это дает желаемый результат, хотя вы не включили таблицу ActiveStatus
, поэтому я не смог включить ее в тестирование.
К сожалению,это утверждение слишком сложно для меня, чтобы записать его в один запрос на обновление, поэтому этот двухэтапный подход - лучшее решение, не относящееся к VBA, которое я могу придумать.