0
我試圖更新的滾動平均值計算一個臨時表(MS Access 2010中)更新表從自身
作爲一個選擇查詢,這個工程來計算3個月的移動平均值,但慢,所以我寧願存儲,只有在必要時更新的值:
SELECT tempQORDistGrouped.Type, tempQORDistGrouped.Supplier, tempQORDistGrouped.DepBkMo, tempQORDistGrouped.Amt, tempQORDistGrouped.Brands, tempQORDistGrouped.T2, tempQORDistGrouped.Brand, (select avg(rolavg.Amt) from tempQORDistGrouped as rolavg
where rolavg.Type = tempQORDistGrouped.Type
and rolavg.Supplier = tempQORDistGrouped.Supplier
and rolavg.Brands = tempQORDistGrouped.Brands
and rolavg.Brand = tempQORDistGrouped.Brand
and rolavg.DepBkMo between dateadd("m",-2,tempQORDistGrouped.DepBkMo) and tempQORDistGrouped.depbkmo) AS AvgAmt
FROM tempQORDistGrouped;
我試過下面的更新查詢,但我覺得我的內部聯接語法糟糕,因爲它不會承認x1.Type爲一個有效的字段(我是否需要將這些字段作爲內部連接字段的一部分而不是在where子句中?):
個UPDATE tempQORDistGrouped AS x1
INNER JOIN (SELECT itmID, avg(Amt) AS RolAvg
FROM tempQORDistGrouped
WHERE tempQORDistGrouped.Type = x1.Type
AND tempQORDistGrouped.Brand = x1.Brand
AND tempQORDistGrouped.Brands = x1.Brands
AND tempQORDistGrouped.T2 = x1.T2
AND tempQORDistGrouped.DepBkMo between dateadd("m",-2,x1.DepBkMo) and x1.DepBkMo
GROUP BY itmID
) AS x2
ON x1.itmID = x2.itmID
SET x1.3MonthRollingAmt = x2.RolAvg;
乾杯
感謝SoulTrain,這給一去,只好修復它爲一個小的語法錯誤,但現在我得到錯誤「操作必須使用可更新的查詢」從Access時,我嘗試執行。因爲我在更新表格,所以沒有意義。谷歌搜索,找不到任何解決它的工作,所以如果有人有這個想法,這將是偉大的! – gpark
我在sql server env中試過這個,它工作正常,我沒有MS訪問設置來檢查。您可以將查詢更改爲Select並查看它是否在Access中返回正確的結果。 – SoulTrain