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
我正在尝试回答以下问题:
找出他们在 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
这确实执行数据,但不是我想要的。
我做错了什么?
这里没有足够的信息来解决这个问题,但猜测问题在这里:
AND p1.payment_date = p2.payment_date + INTERVAL '1 month'
收费相对干净,通常在每月的特定时间产生并在特定日期到期,但付款是 混乱,人们很少在每个月的同一天付款。但是这个条件表达式只匹配 exactly 一个月后的付款。这需要允许下个月的付款发生在某个允许的范围内,或者以其他方式映射到已知与所需月份匹配的费用或发票。