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

这应该返回所有供应商名称及其平均交易金额。如何嵌套它,以便我可以将 transactionAmount 与供应商名称匹配的平均值进行比较?

4

1 回答 1

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 号/主键值。

于 2011-04-30T12:27:49.690 回答