1

取引表があります。テーブルは、複数のトランザクション金額を持つ複数のトランザクションを持つ複数のベンダーでした。ベンダーの取引がそのベンダーの平均取引額の 2 倍を超える場合、テーブルを更新する必要があります。これまでのところ、間違っている次のコードを思いつきました。

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

これにより、すべての 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 に答える