我觉得这个例子更好地说明了我的问题。
我尝试做的是从最近购买日期开始,为每个客户选择每次购买。因此,如果客户A的最近一次购买是2017年1月5日,那么我希望他们从2016年1月5日到2017年1月5日购买。但是,如果有人最近购买的是2017年2月2日,我只想要他们从2月购买2016年2月至2017年2月2日。
我已经能够手动输入日期,但我不能这样做,因为我想将这些数据实现为自动化模型
答案 0 :(得分:2)
加入一个获取每个客户最近时间的子查询,然后在加入条件中使用它。
SELECT p.*
FROM purchases AS p
JOIN (SELECT client_id, MAX(purchase_data) AS maxdate
FROM purchases
GROUP BY client_id) AS m
ON p.client_id = m.client_id
AND p.purchase_date BETWEEN DATE_SUB(m.maxdate, INTERVAL 1 YEAR) AND m.maxdate