无法让 innerjoin 以所需的输出执行

问题描述 投票:0回答:1
JOIN payment p2
    ON p1.customer_id = p2.customer_id
    AND p1.payment_date = p2.payment_date + INTERVAL '1 month'
JOIN customer c
    ON p1.customer_id = c.customer_id

ERD

我正在尝试回答以下问题:

找出他们在 2007 年每月付款的差异。编写一个查询来比较每个连续月份的付款金额。对这 10 位付费客户中的每一位重复此操作。

目前我的查询将输出空表。

我试过:

JOIN payment p2 
ON p1.payment_date = p2.payment_date + INTERVAL '1 month'
JOIN customer c
ON p1.customer_id = c.customer_id

这确实执行数据,但不是我想要的。

我做错了什么?

sql mysql inner-join
1个回答
0
投票

这里没有足够的信息来解决这个问题,但猜测问题在这里:

AND p1.payment_date = p2.payment_date + INTERVAL '1 month'

收费相对干净,通常在每月的特定时间产生并在特定日期到期,但付款是 混乱,人们很少在每个月的同一天付款。但是这个条件表达式只匹配 exactly 一个月后的付款。这需要允许下个月的付款发生在某个允许的范围内,或者以其他方式映射到已知与所需月份匹配的费用或发票。

© www.soinside.com 2019 - 2024. All rights reserved.