2013-12-20 4 views
-2

Как написать запрос для отображения cust_id и cust_name_last для каждого клиента, у которого были заказы в течение двух последующих месяцев в текущем году. (последовательное значение они следуют друг за другом «может, июнь»)запрос для успешных заказов клиентов

например: заказчик 3 имеет заказы в мае и июне этого года.

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

Поделитесь схемой и тем, как вы присоединяетесь к таблице клиентов в таблице заказов. – AgRizzo

+0

Я просто хочу знать, как найти клиентов с заказами в течение последовательных месяцев в году – user3121154

ответ

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/.

Смежные вопросы