【问题标题】:Update remaining amount on a debit card with MS Access / SQL according to card number根据卡号使用 MS Access / SQL 更新借记卡上的余额
【发布时间】:2020-08-04 11:16:05
【问题描述】:

我正在尝试更新不同借记卡上的剩余金额。我有以下 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;

但我现在不知道该去哪里。

我该如何解决?

【问题讨论】:

  • 剩余金额如何计算?你怎么知道初始金额?
  • 我对每张卡都收取一定的费用,我想跟踪卡的使用量。在这个例子中,卡号 123 的剩余金额应该是 820,因为有 1000,我们在交易 1 中使用了 100,在交易 3 中使用了 80 (1000 - (100+80) = 820 )。

标签: sql ms-access sql-update


【解决方案1】:

您似乎想要这样的东西——假设您有一个包含原始金额的表:

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
                            )
                           );

【讨论】:

  • 这正是我所需要的,只是我需要将剩余值更新到我的 Cards 表中。我可以这样做:UPDATE Credit_Cards SET Credit_Cards.Remaining_Amount = 您的查询?
  • 不幸的是,我收到以下错误:“操作必须使用可更新的查询”...我在 MS Access 上工作。我正在尝试找到一个适合该问题的解决方案,但暂时找不到它。您有解决此问题的建议吗? @GordonLinoff
  • 你知道我能做什么吗?
猜你喜欢
  • 1970-01-01
  • 2022-01-09
  • 2017-01-27
  • 2013-05-24
  • 1970-01-01
  • 1970-01-01
  • 2011-11-08
  • 2014-10-27
  • 2011-04-23
相关资源
最近更新 更多