更新ステートメントでAVG関数を正しく使用するにはどうすればよいですか?
-
27-10-2019 - |
質問
テーブルに挿入された各miuidの平均を取得しようとしています。関連する表と列情報は次のとおりです。
表1。[MIU ID]、Table1。[Avg rssi
と
表2.miuid、table2.meannum
私が単に選択されたステートメントを使用していた場合、私は次のことをします:
Select DISTINCT Table1.[MIU ID], Avg(Table1.[Avg RSSI]) as MeanNum
From Table1
GROUP BY Table1.[MIU ID]
ただし、この情報を表2の列に挿入する必要があります。以下のバリエーションを試してみましたが、私が得ているエラーは、グループを使用させないことと、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]
概要
私がやろうとしているすべてを繰り返すことは、異なるMIU IDごとに表1のAVG RSSI列の平均を取得し、各値を表2の適切な行に挿入することです。
ノート
Avgnumと呼ばれるTable2には、平均的な数値を取得するために平均となる可能性のある列があります。
私は2つのステップでやろうとしていることをする方法を知っていますが、1つのSQLステートメントでそれを行うことを望んでいます。
解決
編集: :以下のコードは、MS-Access/Jetでは機能しません。このリンクを参照してください:
操作は、更新可能なクエリを使用する必要があります。 (エラー3073)Microsoft Access
元の答え:
サブクエリで元の選択クエリを使用して、それに参加できます。構文はチェックされておらず、MS-AccessよりもT-SQLに精通していますが、次のようなものです。
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
所属していません StackOverflow