2013-06-26 5 views
0

Я пытаюсь получить последнюю дату продажи для каждого клиента следующим образом, но это только возвращающий последнюю запись в таблице:T SQL выбрать последнюю продажу каждого клиента

Select top 1 InvoiceDate 
,Customer 
from salestable a 
order by InvoiceDate desc 

Помощь будет весьма признателен ,

+0

Какую версию SQL Server (предположительно, это может быть Sybase, я полагаю)? –

ответ

1

Не используйте TOP 1 - вот почему вы возвращаете только 1 результат.

Попробуйте использовать MAX и GroupBy клиента

SELECT Customer, MAX(InvoiceDate) 
FROM SalesTable 
GROUP By Customer 
ORDER By MAX(InvoiceDate) DESC 
+0

Привет, спасибо, мне понравилось это в первый раз. Сначала он дает ошибку, что InvoiceDate должен быть в группе, а затем добавляю ее в группу и возвращаю тот же клиент с разными InvoiceDates – Wilest

+0

, чтобы заставить его работать, изменить на: MAX (InvoiceDate) InvoiceDate –

+0

@wilest - вы нужно MAX (InvocieDate) в ORDER. Вот почему. Я обновил свой ответ. –