如何编写查询以显示当前年度连续两个月订单的每位客户的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)
答案 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/上发布架构和示例数据。