问题陈述:我需要找出Over Due开始日期,并且我需要计算超过截止天数。我知道怎么做超过天数,但我无法找到一种方法来找出过期的开始日期。
示例:我们说客户没有支付2017年11月4日,2017年12月4日,2018年1月4日,2018年2月4日的付款。现在这些客户收集表中有4个零收集记录,Over Due中有4个记录带有D标志的集合表。现在2月8日客户支付了分期付款,然后相应的付款记录被放置在集合表中,另一个记录在带有C标志的过期集合中。由于此款项已于2017年11月4日调整,因此超时开始日期为12月4日。假设客户未付款,则将于2017年11月4日作为逾期开始日期。
我有一个贷款管理系统的表格如下:
时间表(付款时间表):将包含所有分期付款,其中包含每月支付的相应金额的日期。
架构:LoanNo, Schedule Date, Installment No, Principle, Interest.
收集的每个月的收款(付款收集)。假设未收到付款,A记录与相应的日期和零金额一起放置。另一条记录将被放置在Over due collections表中,带有D标志和相应的金额。如果发生任何收集,则将插入另一条记录,其中标志C代表集合。
Schema: LoanNo, PaymentReceived Date, Principle, Interest
过期收藏(如果有收据,将会有记录)
Schema: LoanID, Flag(D/C), Date, Principle, Interest
请建议并指导我为此写一个正确的查询
答案 0 :(得分:0)
这是一个有趣而又容易的问题。您可以通过计算金额的运行总和来解决,然后与客户的总付款进行比较。记录运行金额大于总付款额的所有记录。并选择最短的日期。
如果需要进一步的帮助,请告诉我,我会给你SQL查询。但你应该尝试自己的
编辑1
这将为您提供running_sum
_______Subquery1_______
select a.LoanNO,a.Scheduledate,a.Amount,sum(b.amount)run_sum from
Paymentschedule a
join PayamentSchedule b
on a.LoanNo=b.LoanNo and a.ScheduleDate>b.ScheduleDate and
a.ScheduleDate<=now() group by 1,2,3
贷款总收款
_______subquery 2_____
select LoanNo,sum(amount)total collection from collection group by 1
现在
select a.LoanNo,min(ScheduleDate) overduestartdate from subquery1 join subquery2 on
a.LoanNO=b.LoanNO
and a.run_sum>b.Collection group by 1
根据您的架构进行修改