2013-09-04 3 views
0

언어 지식을 끌어 당기는 코드가 있으며 각 직원에게는 계획 연도가 있으며 매년 완료해야하며 가장 최근의 코드를 얻는 코드가 있습니다. 계획 년도에 MAX를 사용합니다. 이제 기준 중 하나는 그들이 바다 위로 이동하고자하는지의 여부입니다. 가장 최근의 YES와 가장 최근의 NO를 가져올 수있는 문제가 발생하며, 가장 최근의 계획 연도가 필요합니다. 예 또는 아니오 이 문제를 해결하는 데 어려움이 있습니다. 다음과 같이 코드는 다음과 같습니다 당신은 최대에 하위 쿼리가 필요()와 그에 가입MAX가 다른 경우에도 MAX 결과를 얻는 방법

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  
+0

? 포스트그레스? 신탁? –

+0

나는 문제가되는 부분으로 그것을 짧게 만들었는데, 우연히 모든 것을 처음에 넣었습니다. – user2119980

+0

누가이 이름을 사용했는지에 대한 SQL Server – user2119980

답변

2
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 
0

나는 라파엘 게시 당신이 가장 최근의 결정 및 연도를 원하는 경우 확실하지 않다거나 네 년대와 노 년대하지만 항상 직원에 대한 최대 계획 올해를 원하는 경우.

여기에는 yes와 no의 쿼리가 있지만 최대 계획 연도는 항상 직원의 최대 값입니다. 나는이 규모, 허용 대답보다 더 효율적입니다 의심

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 
4

...

;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; 
사용중인 DBMS
+0

+1을 사용하고 있습니까? – Zane

관련 문제