2011-04-29 63 views
1

我有一個交易表。該表是多個供應商與多筆交易與多個交易金額。如果供應商交易數量超過該供應商的平均交易金額的兩倍,我需要更新表格。到目前爲止,我想出了下面的代碼是錯誤的:嵌套查詢微軟訪問

Update tblTransaction 
SET VariabilityIndicator = 1 
WHERE transactionNumber IN 
(Select transactionNumber 
From tblTransaction 
GROUP BY VendorName 
HAVING transactionAmount >= AVG(transactionAmount*2)) 

上面的代碼顯然是錯誤的。我想出了一個可能可以嵌套的聲明:

SELECT AVG(transactionAmount) VendorName 
FROM tblTransaction 
GROUP BY VendorName 

這應該返回所有VendorNames及其平均交易金額。如何嵌套這個,以便我可以比較transactionAmount與供應商名稱匹配的平均值?

回答

0
Update tblTransaction 
SET VariabilityIndicator = 1 
WHERE transactionNumber IN 
(
    Select T.TransactionNumber 
    from tblTransaction as T 
    Where T.transactonAmount > 2 * (
     Select AVG(transactionAmount) 
     From tblTransaction as A 
     Where A.VendorName = T.VendorName 
    ) 
) 

您可能想檢查您的業務邏輯,以排除從平均計算中評估的transactionAmount。此外,您可能不希望匹配供應商名稱,但是需要某種ID號/主鍵值。