背景描述:
XXX欠我1000元,在某一天还了100,过了几天又还了150,最近又还了550。
求:每次换我钱后,还欠我多少钱。
分析:
我们可以用oracle的分析函数sum()来解决这个问题,通过换钱的时间升序,然后用总的金额减去前面总共还了多少,得到每次还了还欠的钱。
With tmp As (
Select to_date('20140228','yyyymmdd') a,1000 b From dual
),tmp1 As (
Select to_date('20140228','yyyymmdd') a1,100 b1 From dual
Union All
Select to_date('20140301','yyyymmdd') a1,150 b1 From dual
Union All
Select to_date('20140310','yyyymmdd') a1,550 b1 From dual
)Select a,b,a1,b1,b-Sum(b1) Over(Order By a1) From tmp,tmp1;
结果如下: