一時テーブルを使用して顧客の平均負荷を合計し、これらの新しい値で顧客テーブルを更新したいと考えています。単一の更新などを実行できますが、セットとして更新したいのですが、「サブクエリが複数の値を返しました。コードの 2 番目のブロックからサブクエリが続く場合、これは許可されません (#tcAvgs のすべての値は問題ありません。
create table #tcAvgs
(
AccNo varchar(10) COLLATE SQL_Latin1_General_CP1_CI_AS,
AvgFrame float,
AvgValue float,
AvgJobs float
)
INSERT INTO #tcAvgs (AccNo, AvgFrame, AvgValue, AvgJobs)
SELECT t.accno, ROUND(t.TFrame/t.ccount ,2),ROUND(t.TValue/t.ccount , 2), ROUND( t.CCount/6 ,2)
FROM #tcTotals t
UPDATE c
SET c.AvgFrames = a.AvgFrame,
c.AvgJobs = a.AvgJobs,
c.AvgValue = a.AvgValue
FROM customers c join #tcAvgs a on c.AccountNo = a.AccNo
私はそれを行うためのさまざまな方法を見てきましたが、それらはすべて同じエラーを出すようです。弾丸を噛んで一時テーブルをループして個々の更新を行う必要があるかどうか疑問に思っていますか? 複数の更新を実行する SQL の機能について、何か基本的なことが欠けています (多くの単一の更新ではありますが)。
正しい方向へのプッシュをいただければ幸いです。