更新ステートメントでAVG関数を正しく使用するにはどうすればよいですか?

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

質問

テーブルに挿入された各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 
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top