我在求职面试时问过这个问题,我似乎无法找到正确的方法来做这件事。我只是在寻找答案,所以如果再次出现,我会更多地了解应该做些什么。
表A有3列。 ID,客户名称和金额
值(1,“某人”,20000)
表B有3列。 CustID,日期,付款。 值
(1, 1/1/2014, 100)
(1, 2/1/2014, 200)
(1, 3/1/2014, 500)
(1, 4/1/2014, 175)
他们想知道的是,每次付款后,帐户的剩余余额是多少。所以输出将是:
客户名称,付款金额,剩余余额
每笔付款。
有人会如何实现这一点,因为我已经难倒了所有的数据库朋友,似乎无法在谷歌上找到这些信息......
答案 0 :(得分:2)
在支持ANSI标准累积和语法的数据库中,您只需执行以下操作:
select a.CustomerName, b.Payment,
(a.amount - sum(b.payment) over (partition by a.id order by date)) as RemainingBalance
from tablea a left outer join
tableb b
on a.id = b.id;
在其他数据库中,我会使用相关的子查询。