2014-04-24 29 views
0

我有一个问题在求职面试时问我,我似乎无法找到正确的方法来做到这一点。我只是在寻找答案,所以如果再次出现,我会有更多关于应该做什么的想法。付款金额跟踪sql

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

他们想知道什么是每个已经付款后,什么是该帐户的余额。因此,输出将是:

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

对于每个付款。

人们如何去实现这一点,因为我难住了我所有的数据库和朋友似乎无法找到对谷歌资讯....

回答

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; 

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

+0

这就是当我回家并开始在互联网上探索时所想的。我现在正在安装MSSQL Server 2012,我所拥有的是MySQL在我的电脑上运行。我会测试这一点,并让你知道。再次感谢戈登! –

+0

OP更新了这个问题,所以你的最后一句话没有意义了 –

+0

@ConradFrix。 。 。谢谢。我讨厌那个。 –