SQL:如何使用变量单独过滤行?

时间:2017-06-23 22:37:00

标签: mysql sql

我觉得这个例子更好地说明了我的问题。

我尝试做的是从最近购买日期开始,为每个客户选择每次购买。因此,如果客户A的最近一次购买是2017年1月5日,那么我希望他们从2016年1月5日到2017年1月5日购买。但是,如果有人最近购买的是2017年2月2日,我只想要他们从2月购买2016年2月至2017年2月2日。

我已经能够手动输入日期,但我不能这样做,因为我想将这些数据实现为自动化模型

1 个答案:

答案 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