Как правильно использовать функцию Avg в операторе обновления? - PullRequest
1 голос
/ 06 сентября 2011

Я пытаюсь получить среднее значение для каждого MIUID, вставленного в таблицу. Соответствующие таблицы и информация о столбцах:

Таблица 1. [ID MIU], Таблица 1. [Avg RSSI]

и

Table2.MIUID, Table2.MeanNum

Если бы я просто использовал оператор выбора, я бы сделал следующее:

Select DISTINCT Table1.[MIU ID], Avg(Table1.[Avg RSSI]) as MeanNum
From Table1
GROUP BY Table1.[MIU ID]  

Однако мне нужно, чтобы эта информация была вставлена ​​в столбец в таблице 2. Я пробовал следующие варианты и варианты следующих, и ошибки, которые я получаю, заключаются в том, что он не позволяет мне использовать 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 в Таблице 1 для каждого отдельного идентификатора MIU и вставить каждое значение в соответствующую строку в Таблице 2.

Примечание
В таблице 2 есть столбец с именем AvgNum, который может быть средним для получения того же числа, которое необходимо ввести в столбец MeanNum, если использовать его будет проще.

Я знаю, как сделать то, что пытаюсь сделать, в два шага, но я бы предпочел сделать это одним оператором sql.

1 Ответ

2 голосов
/ 07 сентября 2011

Редактировать : приведенный ниже код не будет работать в 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 
...