查询连续的客户订单

时间:2013-12-20 01:08:32

标签: mysql sql

如何编写查询以显示当前年度连续两个月订单的每位客户的cust_id和cust_name_last。 (连续意味着他们互相追随'可能,6月')

例如:客户3在今年5月和6月有订单。

select cust_id, cust_name_last
from customer
where date_sub (order_date, interval 1 month)
and date_sub (order_date, interval 2 months)

1 个答案:

答案 0 :(得分:0)

  

“我只是想知道如何在一年内连续几个月找到订单的客户”

你可以尝试一下吗?

SELECT DISTINCT month1.cust_id, month1.cust_name_last
FROM customer month1 INNER JOIN customer  month2
    ON month1.cust_id = month2.cust_id
    AND YEAR(month2.order_date) = YEAR(month1.order_date)
    AND MONTH(month2.order_date) - MONTH(month1.order_date) = 1;

如果您想查找包含其他年份的连续订单(例如2013-12 => 2014-01),需要检查溢出,如下所示

SELECT DISTINCT month1.cust_id, month1.cust_name_last
FROM customer month1 INNER JOIN customer  month2
    ON month1.cust_id = month2.cust_id
    AND (YEAR(month2.order_date) - YEAR(month1.order_date)) * 12 + (MONTH(month2.order_date) - MONTH(month1.order_date)) = 1;

如果前面的SQL不适合您,我们非常感谢您在sqlFiddle http://www.sqlfiddle.com/上发布架构和示例数据。