2017-01-05 2 views
0

Ich habe einen Tisch EmployeeDetailsdie Höchstsätze basierend auf dem maximalen Zeitpunkt zu finden

bekomme
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% 

Könnten Sie mir bitte helfen, eine SQL-Abfrage zu finden, das basierend auf der Suche nach der maximalen Datumzeit von ‚workDate‘ erhält dann Das 'workDate' erhält den entsprechenden Datensatz für jede Abteilung.

Erwarteter Ausgang:

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% 

Ihnen sehr danken.

+0

Bitte zeigen Sie Ihre gewünschte Ausgabe – TheGameiswar

+0

DeptID | workDate | Prozent ------------------------------------------------ - 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

Kann ein Mitarbeiter zwei Datensätze mit genau demselben "workDate" -Wert haben? – iamdave

Antwort

0

Bitte siehe unten. Innere Verbindung wird in diesem Fall helfen.

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 
Verwandte Themen