SELECT
(SELECT
IIF(IsNull(sum(b.AmountCharged) - sum(b.AmountPaid)),
a.Balance,
(sum(b.AmountCharged) - sum(b.AmountPaid)))
FROM tblCurrentTransaction AS b
WHERE b.TenantTransactionID <= a.TenantTransactionID
AND b.Tenant = a.Tenant
GROUP BY b.Tenant
) AS TrueBalance, a.TenantTransactionID
FROM tblCurrentTransaction AS a
ORDER BY a.Tenant, a.TenantTransactionID;
UNION
UPDATE tblCurrentTransaction SET tblCurrentTransaction.Balance = TrueBalance
WHERE tblCurrentTransaction.TenantTransactionID = a.TenantTransactionID;
По сути, я получаю набор результатов из первого запроса, а затем сопоставляю его TenantTransactionID с запросом на обновление. Однако Access жалуется: «Запрос действия не может быть использован в качестве источника строки»
Как я могу это исправить?
Это запрос без СОЮЗА
UPDATE tblCurrentTransaction SET tblCurrentTransaction.Balance = (SELECT
(SELECT
IIF(IsNull(sum(b.AmountCharged) - sum(b.AmountPaid)),
a.Balance,
(sum(b.AmountCharged) - sum(b.AmountPaid)))
FROM tblCurrentTransaction AS b
WHERE b.TenantTransactionID <= a.TenantTransactionID
AND b.Tenant = a.Tenant
GROUP BY b.Tenant
) AS TrueBalance
FROM tblCurrentTransaction AS a
WHERE a.TenantTransactionID = tblCurrentTransaction.TenantTransactionID
ORDER BY a.Tenant, a.TenantTransactionID;
);
Но это ничего не делает, и Access жалуется "Операция должна использовать обновляемый запрос"
Это запрос, который собирает данные
Этот запрос возвращает истинный баланс и идентификатор транзакции, к которой он принадлежит. Это то, что мне нужно вставить в таблицу.
SELECT (SELECT IIF(IsNull(sum(b.AmountCharged) - sum(b.AmountPaid)),a.Balance, (sum(b.AmountCharged) - sum(b.AmountPaid)))
FROM tblCurrentTransaction AS b
WHERE b.TenantTransactionID <= a.TenantTransactionID AND b.Tenant = a.Tenant
GROUP BY b.Tenant
) AS TrueBalance, a.TenantTransactionID
FROM tblCurrentTransaction AS a
ORDER BY a.Tenant, a.TenantTransactionID;