2013-12-24 4 views
0

Это кажется таким простым, но для меня жизнь не может понять это. У меня есть таблица EERate с 3 столбцами и данными, подобными этому.Получение последней записи для каждой уникальной записи в другом столбце

EmployeeNo RateAmt RaiseDate 

C100 | 10.00 | 1/1/2013 
C100 | 11.00 | 6/1/2013 
C100 | 10.50 | 8/1/2013 
C200 | 15.00 | 6/1/2013 
C200 | 16.00 | 8/1/2013 

Мне нужен оператор выбора, который будет возвращать последние данные для каждого сотрудника.

Select EmployeeNo, Max(RaiseDate), RateAmt from EErates group by employeeNo не работает, потому что rateamt не является агрегатной функцией.

Select EmployeeNo, Max(RaiseDate), max(RateAmt) from EErates group by employeeNo извлекает неправильные данные. Любые идеи?

+0

Пожалуйста, измените ваш вопрос с подробной информацией о том, что вы ищете. Как именно вы хотите, чтобы результаты вашего запроса выглядели и почему вывод из вашего текущего запроса был неправильным? –

ответ

0
SELECT EmployeeNo, RateAmt, RaiseDate FROM EErates o 
WHERE RateAmt = (SELECT TOP 1 RateAmt FROM EErates i1 WHERE i1.EmployeeNo = o.EmployeeNo ORDER BY RaiseDate DESC) 
AND RaiseDate = (SELECT TOP 1 RaiseDate FROM EErates i2 WHERE i2.EmployeeNo = o.EmployeeNo ORDER BY RaiseDate DESC) 
Смежные вопросы