Come uso correttamente una funzione AVG in un'istruzione di aggiornamento?
-
27-10-2019 - |
Domanda
Sto cercando di ottenere la media per ogni miuide inserito in un tavolo. Le tabelle pertinenti e le informazioni sulla colonna sono le seguenti:
Table1. [MIU ID], Tabella 1. [AVG RSSI
e
Table2.Miuid, Table2.Meannum
Se stavo semplicemente usando un'istruzione selezionata, farei quanto segue:
Select DISTINCT Table1.[MIU ID], Avg(Table1.[Avg RSSI]) as MeanNum
From Table1
GROUP BY Table1.[MIU ID]
Tuttavia, ho bisogno che queste informazioni vengano inserite in una colonna nella Tabella 2. Ho provato le seguenti e variazioni dei seguenti e gli errori che sto ottenendo sono che non mi permette di usare il gruppo e un altro errore che dice che Meannum non fa parte della funzione aggregata.
UPDATE Table2
INNER JOIN Table1
ON Table2.MIUID = Table1.[MIU ID]
SET Table2.MeanNum = Avg([Table1].[Avg RSSI]);
E l'altra domanda che ho provato è:
UPDATE Table2
SET Table2.MeanNum = Avg([Table1].[Avg RSSI])
WHERE Table2.MIUID = Table1.[MIU ID]
Group By [Table1].[Avg RSSI]
Riepilogo
Ribadire tutto ciò che sto cercando di fare è ottenere la media della colonna AVG RSSI nella Tabella 1 per ogni ID MIU distinto e inserire ogni valore nella riga appropriata nella Tabella 2.
Nota
Esiste una colonna nella Tabella 2 chiamata AVGNUM che potrebbe essere media per ottenere lo stesso numero che deve entrare nella colonna Meannum se utilizzato sarebbe più semplice.
So come fare quello che sto cercando di fare in due passaggi che preferirei essere in grado di farlo in una dichiarazione SQL comunque.
Soluzione
Modificare: Il codice seguente non funzionerà in MS-Access/Jet. Vedi questo link:
L'operazione deve utilizzare una query aggiornabile. (Errore 3073) Accesso Microsoft
Risposta originale:
È possibile utilizzare la query selezionata originale in una sottoquery e partecipare ad essa. Non sintassi controllata e ho più familiarità con T-SQL di MS-Access, ma qualcosa di simile:
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