2016-10-24 3 views
-3

Я использую SQL Server 2012 и пытаюсь вывести 4 последних даты заказа в столбце OrderDate для определенных членов. Я не уверен, как закодировать это. Любая помощь будет оценена.SQL Query, чтобы вытащить последние четыре даты

+2

Вы не представили каких-либо данных образцов, или действительно что-нибудь, что можно было бы использовать, чтобы помочь вам. http://stackoverflow.com/help/mcve –

ответ

0

Это должно быть что-то похожее на это:

select top 4 o.OrderDate 
from Members m 
inner join Orders o 
on m.ID = o.MemberID 
where <your certain members criteria> 
order by o.OrderDate desc 
+0

Будет ли это работать для нескольких членов в таблице? – srl

+0

Я предполагаю, что это должно быть причиной, о которой я говорю, потому что это всего лишь приблизительный ответ, основанный на угадывании структуры ваших таблиц. –

1

Сортировать по дате в порядке убывания, а также ограничить количество строк до 4, как это:

select top 4 order_date from orders order by order_date desc 

Optimizer будет выяснить, что у вас есть предел и оптимизируйте свой запрос, чтобы избежать сортировки всей таблицы. Если столбец order_date проиндексирован, оптимизатор запросов будет использовать индекс, чтобы получить четыре даты без перехода к самой таблице.

0

Я бы сделал что-то вроде этого (вы не указали структуру таблицы, так что это всего лишь псевдокод).

  1. Создание пустой таблицы TempOrders для хранения топ заказов для каждого члена
  2. Открыть Cursor, чтобы пройти через все идентификаторы
  3. элемент Для каждого @MemberId вставки в TempOrders выбрать верхний 4 * от заказов, где MemberId = @MemberId заказа по OrderDate убыв
  4. ваш результат в таблице TempOrders
Смежные вопросы