Как мне правильно использовать функцию Avg в инструкции update?
-
27-10-2019 - |
Вопрос
Я пытаюсь получить среднее значение для каждого MIUID, вставленного в таблицу.Ниже приведены соответствующие таблицы и информация о столбцах:
Таблица 1.[ИДЕНТИФИКАТОР MIU], таблица 1.[Средний RSSI]
и
Таблица 2.MIUID, Таблица 2.MeanNum
Если бы я просто использовал оператор select, я бы сделал следующее:
Select DISTINCT Table1.[MIU ID], Avg(Table1.[Avg RSSI]) as MeanNum
From Table1
GROUP BY Table1.[MIU ID]
Однако мне нужно, чтобы эта информация была вставлена в столбец в Table2.Я пробовал следующее и варианты следующего, и ошибки, которые я получаю, заключаются в том, что это не позволяет мне использовать Group By, и еще одна ошибка, в которой говорится, что MeanNum не является частью агрегатной функции.
UPDATE Table2
INNER JOIN Table1
ON Table2.MIUID = Table1.[MIU ID]
SET Table2.MeanNum = Avg([Table1].[Avg RSSI]);
И другой запрос, который я пробовал, это:
UPDATE Table2
SET Table2.MeanNum = Avg([Table1].[Avg RSSI])
WHERE Table2.MIUID = Table1.[MIU ID]
Group By [Table1].[Avg RSSI]
Краткие сведения
Чтобы повторить, все, что я пытаюсь сделать, это получить среднее значение столбца Avg RSSI в Table1 для каждого отдельного идентификатора MIU и вставить каждое значение в соответствующую строку в Table2.
Примечание
В таблице 2 есть столбец с именем AvgNum, который может быть средним, чтобы получить то же число, которое нужно ввести в столбец MeanNum, если использовать это было бы проще.
Я знаю, как сделать то, что я пытаюсь сделать, в два этапа, однако я бы предпочел иметь возможность сделать это в одном операторе sql.
Решение
Редактировать:приведенный ниже код не будет работать в MS-Access / Jet.Смотрите эту ссылку:
Операция должна использовать обновляемый запрос.(Ошибка 3073) Microsoft Access
Оригинальный ответ:
Вы могли бы использовать исходный запрос SELECT в подзапросе и присоединиться к нему.Синтаксис не проверялся, и я больше знаком с T-SQL, чем с MS-Access, но что-то вроде:
UPDATE
t2
SET
t2.MeanNum = sub.MeanNum
From
Table2 t2
INNER JOIN
(
Select DISTINCT
Table1.[MIU ID],
Avg(Table1.[Avg RSSI] as MeanNum
From
Table1
GROUP BY
Table1.[MIU ID]
) sub
ON sub.[MIU ID] = t2.MIUID