Mysql 创建SQL查询时遇到问题

Mysql 创建SQL查询时遇到问题,mysql,sql,Mysql,Sql,我一直在思考如何编写这个SQL查询,但是在思考了几个小时之后,我想我应该询问SO社区,看看他们是否有任何想法 以下是表格相关部分的模型: 合同 身份证 日期 应收账款(是/否) 术语 付款 合同编号 付款日期 查询的目的是确定每月我们预期的付款数量与我们收到的付款数量 预期付款的条件 预期付款从合同开始。期限为合同后的个月。日期,如果合同。ar为“是”。预计付款将持续到第一次未付款后的一个月 这还有一个复杂的问题:付款可能会延迟,但他们需要像在预期日期付款一样出现 所有的数据都在那里,但

我一直在思考如何编写这个SQL查询,但是在思考了几个小时之后,我想我应该询问SO社区,看看他们是否有任何想法

以下是表格相关部分的模型:

合同
  • 身份证
  • 日期
  • 应收账款(是/否)
  • 术语
付款
  • 合同编号
  • 付款日期
查询的目的是确定每月我们预期的付款数量与我们收到的付款数量

预期付款的条件 预期付款从
合同开始。期限为
合同后的
个月。日期
,如果
合同。ar
为“是”。预计付款将持续到第一次未付款后的一个月

这还有一个复杂的问题:付款可能会延迟,但他们需要像在预期日期付款一样出现

所有的数据都在那里,但是我一直很难理解SQL查询。我不是SQL专家——我只是有相当多的处理简单查询的经验。如果可能的话,我希望避免在代码中过滤结果——但如果没有您的帮助,我可能不得不这样做

预期产量 SQL小提琴
我已经创建了一个SQL FIDLE:

无需编写查询,我就可以为您提供总体思路: 在合同表中,以月为单位转换
date+term
,并按月对结果集进行分组,其中ar='YES'。这将为您提供预期的付款

在第二个表中,以月为单位计算付款日期,以月为单位分组计算收到的付款数量


然后,您可以在每月将这两个子结果合并在一起,以在一个结果集中获得这两条信息。

那么您期望的输出是什么呢?1月:预计12笔付款,收到10笔付款?@Horen这正是我想要的输出(表格格式除外)@Horen我之前的评论是错误的,事实上-我误解了你。我将使用“预期付款部分”的预期输出更新问题,尝试以下操作:
select count(*),DATE\u格式(DATE\u ADD(DATE,INTERVAL term MONTH),“%m”)作为合同的月份,其中ar='yes'按月分组
Ok,这将给我预期付款的第一个日期。但是,这对我以后的几个月有什么帮助呢?虽然每个月都会收到一次付款,但是他们应该只在收到付款的当月出现。看起来你没有考虑到这一点-我错了吗?比这更复杂。如果付款预计在1月份,期限为2个月,是否预计在2月份取决于是否在1月份收到。而月日则使问题进一步复杂化,因为如果合同日期为1月15日,则预计将在3月份进行。我不认为查询的第一部分将包含的内容将不仅仅是第一笔预期付款,比如发生在1月份。如果付款完成,付款也将在2月。我还增加了另一个要求的问题-逾期付款需要处理,如果他们发生的时间。
Month    Expected Payments    Received Payments
January  500                    450
February 498                    478
March    234                    211
April    987                    789
...