Обновите остаток на дебетовой карте с помощью MS Access / SQL в соответствии с номером карты - PullRequest
0 голосов
/ 04 августа 2020

Пытаюсь обновить остаток денег на разных дебетовых картах. У меня есть 2 следующие таблицы: Карты и Транзакции. Я бы хотел, чтобы мой результат был:

 Number|Initial_Amount|Remaining_Amount         T_ID|T_Date|Credit_Card|Amount
----------------------------------------       ---------------------------------
    123|          1000|     820                    1| 05/02|        123| 100
    456|           200|     150                    2| 06/02|        456| 50
                                                   3| 06/02|        123| 80

Я уже написал запрос для суммирования суммы по кредитной карте:

SELECT DISTINCT Sum(T2.Amount) AS SumOfAmount
FROM Transactions AS T1 INNER JOIN Transactions AS T2 ON T1.Credit_Card = T2.Credit_Card
GROUP BY T1.ID, T1.Credit_Card, T1.Amount;

Но я не знаю, куда go к настоящему времени.

Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 04 августа 2020

Кажется, вам нужно что-то вроде этого - если у вас есть таблица с исходной суммой:

select c.credit_card, c.original_amount,
       (c.original_amount - nz(sum(t.amount), 0)) as remaining
from cards as c left join
     transactions as t
     on t.credit_card = c.credit_card
group by c.credit_card, c.original_amount;

Если вы хотите обновить cards, используйте коррелированный подзапрос:

update cards
    set remaining_amount = (c.original_amount -
                            (select nz(sum(t.amount), 0)
                             from transactions as t
                             where t.cred_card = cards.credit_card
                            )
                           );
...