Wie bekomme ich das MAX-Ergebnis, auch wenn der MAX anders ist

Ich habe einen Code, wo ich Sprachkenntnisse ziehe und jeder Mitarbeiter hat ein Planjahr, sie alle nicht alle vervollständigen sie jedes Jahr und um ihre neueste zu bekommen, benutze ich die MAX für Planjahr. Jetzt ist eines der Kriterien, ob sie bereit sind, sich über Meere zu bewegen, das Problem entsteht, dass es ihr jüngstes JA und das jüngste NEIN heraufbringen wird und ich brauche nur ihr letztes Planjahr, ob es ja oder nein ist, ich Ich habe Schwierigkeiten, dies zu beheben. Der Code ist wie folgt:

SELECT Employee_ID, Accept_International_Assignment, MAX(Plan_Year) AS Expr1 FROM dbo.v_sc08_CD_Employee_Availabilities GROUP BY Employee_ID, Accept_International_Assignment 

 SELECT a.Employee_ID, a.Accept_International_Assignment, a.Plan_Year FROM dbo.v_sc08_CD_Employee_Availabilities a INNER JOIN (SELECT Employee_ID, MAX(Plan_Year) maxPlanYear from dbo.v_sc08_CD_Employee_Availabilities GROUP BY Employee_ID) m ON a.Plan_Year = m.maxPlanYear AND a.Employee_ID = m.Employee_ID 

Ich vermute, das wird effizienter sein als die akzeptierte Antwort, im Maßstab …

 ;WITH x AS ( SELECT Employee_ID, Accept_International_Assignment, Plan_Year, rn = ROW_NUMBER() OVER (PARTITION BY Employee_ID ORDER BY Plan_Year DESC) FROM dbo.v_sc08_CD_Employee_Availabilities -- who comes up with these names? ) SELECT Employee_ID, Accept_International_Assignment, Plan_Year FROM x WHERE rn = 1; 

Ich bin mir nicht sicher, ob du nur die jüngste Entscheidung und das Jahr willst, wie Raphael gepostet hat oder ob du das Ja und das Nein willst, aber immer mit dem Max Planjahr für diesen Angestellten.

Hier ist eine Abfrage für die ja und nein, aber Max Plan Jahr ist immer die max für den Mitarbeiter.

 select main.Employee_ID, Accept_International_Assignment, Expr1 from ( SELECT Employee_ID, Accept_International_Assignment FROM @v_sc08_CD_Employee_Availabilities GROUP BY Employee_ID, Accept_International_Assignment ) main inner join ( select Employee_ID, MAX(Plan_Year) as Expr1 from @v_sc08_CD_Employee_Availabilities group by Employee_ID) empPlanYear on main.Employee_ID = empPlanYear.Employee_ID 

Du brauchst eine Unterabfrage auf dem max () und kommst dagegen.

SQL-Gruppe von & Max