2015-02-26 2 views
0

У меня есть схема с клиентами, заказы и заказы. Клиент может иметь заказы в несколько дат. Мне нужен вычисляемый член, чтобы принести дату первого заказа и дату второго заказа с другими связанными метриками. Мне удалось получить дату первого заказа и связанные с ним данные, используя min (дату заказа) в качестве первого заказа, но у вас возникли вопросы с запросом на дату второго заказа. Любое предложение поможет! БлагодаряЗапрос для заказа даты второго заказа для клиента (SQL 2014)

моего запрос

--- Я вся информация в одной таблице, так что мой запрос выглядит

Выберите CustomerID, идентификатор заказа, мин (OrderDate), как firstorderdate ... От клиента Где первый ordedate между 01/01/2015' и GETDATE()

(так как я хочу только тех клиентов, которые сделали свою первую покупку в этом году)

Запрос их вторая покупка

Выберите CustomerID, OrderID, OrderDate из (выберите CustomerID, OrderID, OrderDate, rwo_number() над (раздел по CustomerID, OrderID порядка по OrderDate) гп от клиента Где гп < = 2

+0

Вставить в ваш запрос .. – SoulTrain

ответ

0

не видя текущий запрос, это трудно понять. Я предполагаю, что ваш текущий запрос, как это:

select c.customerid, o.orderid, min(od.orderdate) 
from customers c 
    join orders o on c.customerid = o.customerid 
    join orderdates od on o.orderid = od.orderid 
group by c.customerid, o.orderid 

Другой способ сделать то же запрос должен использовать row_number. Таким образом, вы не ограничены только первым в группе:

select customerid, orderid, orderdate 
from (
    select c.customerid, o.orderid, od.orderdate, 
     row_number() over (partition by c.customerid, o.orderid 
          order by od.orderdate) rn 
    from customers c 
     join orders o on c.customerid = o.customerid 
     join orderdates od on o.orderid = od.orderid 
) t 
where rn <= 2 
Смежные вопросы