2017-01-05 4 views
0

У меня есть таблица EmployeeDetailsнайти максимальные записи на основе максимальной даты

DeptID |  workDate  | percentage 
------------------------------------------ 
1   06/07/16 10:10:10  10% 
1   07/07/16 11:11:10  20% 
2   06/07/16 09:10:10  5% 
2   07/07/16 08:10:10  3% 
3   06/07/16 10:10:10  15% 
4   07/07/16 11:10:10  20% 

Не могли бы вы помочь мне найти запрос SQL, который получает найти максимальное DateTime из «workDate», то на основании «workDate» получает соответствующую запись для каждого отдела.

Ожидаемый результат:

DeptID | workDate |  percentage 
1  07/07/16 11:11:10  20% 
2  07/07/16 08:10:10  3% 
3  06/07/16 10:10:10 15% 
4  07/07/16 11:10:10 20% 

Большое спасибо.

+0

показать все необходимые данные – TheGameiswar

+0

DeptID | workDate | процент ------------------------------------------------ - 1 07/07/16 11:11:10 20% 2 07/07/16 08:10:10 3% 3 06/07/16 10:10:10 15% 4 07/07/16 11:10:10 20% – Creditto

+0

Может ли сотрудник иметь две записи с одинаковым значением 'workDate'? – iamdave

ответ

0

См. Ниже. В этом случае поможет внутреннее соединение.

CREATE TABLE #EmployeeDetails 
(
    DeptID int 
    ,workDate datetime 
    ,percentage varchar(100) 
) 

INSERT INTO #EmployeeDetails 
SELECT 1,'06/07/16 10:10:10','10%' 
UNION 
SELECT 1,'07/07/16 11:11:10','20%' 
UNION 
SELECT 2,'06/07/16 09:10:10','5%' 
UNION 
SELECT 2,'07/07/16 08:10:10','3%' 
UNION 
SELECT 3,'06/07/16 10:10:10','15%' 
UNION 
SELECT 4,'07/07/16 11:10:10','20%' 

SELECT T1.* 
FROM  #EmployeeDetails T1 
JOIN (SELECT DeptID,MAX(workDate) AS max_workdate 
     From #EmployeeDetails 
     GROUP BY DeptID) T2 
ON  T1.DeptID = T2.DeptID AND T1.workDate = T2.max_workdate 
ORDER BY T1.DeptID 
Смежные вопросы