我一直在考虑如何编写这个SQL查询一段时间,但在考虑了几个小时后,我想我会问SO社区是否有任何想法。
以下是表格相关部分的模拟:
查询的目的是每月确定我们预期的付款次数,以及我们收到的付款次数。
期待付款的条件
预计付款在contracts.term
后contracts.date
个月开始,如果contracts.ar
为“是”。在第一次错过付款后的一个月内,付款将持续到期。
另外还有一个复杂因素:付款可能会延迟,但他们需要显示好像是在预期日期付款。
数据就在那里,但我一直无法绕过SQL查询。我不是一个SQL大师 - 我只是在处理更简单的查询方面有相当多的经验。如果可能的话,我想避免在代码中过滤结果 - 但是没有你的帮助,这可能是我必须要做的。
Month Expected Payments Received Payments
January 500 450
February 498 478
March 234 211
April 987 789
...
我创建了一个SQL小提琴:http://sqlfiddle.com/#!2/a2c3f/2
答案 0 :(得分:1)
如果不编写查询,我可以给你一般的想法:
在合约表中,以月为单位转换date + term
,并将结果集按ar ='YES'的月份分组。这可以为您提供预期的付款。
使用第二个表格,按月收集付款_date,按月收集付款次数。
然后,您可以在一个月内加入这两个子结果,以便在一个结果集中获取这两个信息。