Вложенный запрос Microsoft Access - PullRequest
1 голос
/ 29 апреля 2011

У меня есть таблица транзакций.В таблице было несколько поставщиков с несколькими транзакциями с несколькими суммами транзакций.Мне нужно обновить таблицу, если транзакция поставщика более чем вдвое превышает среднюю сумму транзакции для этого поставщика.До сих пор я придумал следующий неправильный код:

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 с их средней суммой транзакции.Как я могу вложить это, чтобы я мог сравнить значение транзакции со средним, где имена поставщиков совпадают ??

1 Ответ

0 голосов
/ 30 апреля 2011
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
    )
)

Возможно, вы захотите проверить свою бизнес-логику, чтобы исключить транзакцию, которая оценивается из среднего расчета. Также может потребоваться не совпадать по имени поставщика, но по какому-либо идентификатору или значению первичного ключа.

...