Как мне правильно использовать функцию Avg в инструкции update?

StackOverflow https://stackoverflow.com/questions/7325413

Вопрос

Я пытаюсь получить среднее значение для каждого 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 
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top