【问题标题】:SQL: How do I filter rows individually using a variable?SQL:如何使用变量单独过滤行?
【发布时间】:2017-06-24 06:40:55
【问题描述】:

我觉得一个例子可以更好地说明我的问题。

我正在尝试为每位客户从他们最近的购买日期起一年前选择每次购买。因此,如果客户 A 的最近一次购买是 2017 年 1 月 5 日,那么我希望他们在 2016 年 1 月 5 日到 2017 年 1 月 5 日期间进行购买。但是,如果某人最近一次购买是 2017 年 2 月 2 日,我只希望他们从 2016 年 2 月 2 日到 2 月2 2017 年。

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

【问题讨论】:

标签: mysql sql


【解决方案1】:

加入一个获取每个客户端最近时间的子查询,然后在加入条件中使用它。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-10
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    • 2021-07-08
    • 1970-01-01
    • 2019-09-06
    • 1970-01-01
    相关资源
    最近更新 更多