支付金额跟踪sql

时间:2014-04-24 20:51:08

标签: sql math type-2-dimension

我在求职面试时问过这个问题,我似乎无法找到正确的方法来做这件事。我只是在寻找答案,所以如果再次出现,我会更多地了解应该做些什么。

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

他们想知道的是,每次付款后,帐户的剩余余额是多少。所以输出将是:

客户名称,付款金额,剩余余额

每笔付款。

有人会如何实现这一点,因为我已经难倒了所有的数据库朋友,似乎无法在谷歌上找到这些信息......

1 个答案:

答案 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;

在其他数据库中,我会使用相关的子查询。