Справка по операторам SQL - выберите только клиентов без заказа за последние 3 месяца - PullRequest
1 голос
/ 09 мая 2011

Надеюсь, у вас все хорошо.Мне нужно сделать запрос.Пожалуйста, помогите мне с этим.

Вот сценарий.У нас есть две таблицы

  1. Клиенты
  2. Заказы

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

Пожалуйста, помогите мне.Я застрял.Заранее спасибо

Ответы [ 3 ]

3 голосов
/ 09 мая 2011

Не зная вашей точной структуры данных, я угадываю что-то вроде:

Select  CustomerCode,
    CustomerName

From dbo.Customers
where CustomerCode Not in (
               Select CustomerCode
               From dbo.Orders
               Where OrderDate > Cast(Floor(Cast(dateAdd(Month,-3, GetDate()) as Float))as DateTime)
              )
2 голосов
/ 09 мая 2011
SELECT customer_number
  FROM Customers
EXCEPT 
SELECT customer_number
  FROM Orders
 WHERE DATEADD(MONTH,-3, CURRENT_TIMESTAMP) < order_date;
1 голос
/ 09 мая 2011
;WITH CTE_LastOrder (CustomerId, LastOrderDate) As
(
SELECT CustomerId, MAX(OrderDate) LastOrderDate
FROM Orders 
GROUP By CustomerId
)
SELECT * from Customers C
JOIN CTE_LastOrder LO ON C.CustomerId = LO.CustomerId
WHERE LO.LastOrderDate > Cast(Floor(Cast(dateAdd(Month,-3, GetDate()) as Float))as DateTime) 

Выше приведен базовый SQL для SQL Server. Там может быть небольшая разница в синтаксисе.

...