2011-12-07 1 views
2

찾기 다른 기록

Name Subject  Latest_Month_Attended Latest_Year_Attended 
----- ----------- --------------------- -------------------- 
Raju History  6      2011 
Raju Computers 12      2011 
Raju Physics  10      2010 
Raju English  6      2011 
Ravi Chemistry 10      2010 
Ravi Mathematics 10      2010 
Sunil English  5      2011 

을 다음과 같이 내가

Name Subject  Month Year 
----- ----------- ----- ---- 
Raju History  1  2011 
Ravi Chemistry 10  2010 
Raju Computers 12  2011 
Raju Physics  10  2010 
Raju English  6  2011 
Ravi Mathematics 10  2010 
Sunil English  5  2011 
Raju History  5  2011 
Raju History  6  2011 

내가 그 결과를 다음 표를 원하는 한 난의 최신 연도와 월을 찾으려에 대한 테이블의 년, 월 최신 특히 학생 및 제목

이 (편집하려고 위의 결과

답변

3

를 얻기 위해 제발 도와주세요) : 년/월의 값은 단지 하나의 날짜 필드로 결합 된 경우

select t1.Name, t1.Subject, max(month) as Latest_Month_Attended, t2.year as Latest_Year_Attended 
from tab t1 
join (
    select Name, Subject, max(year) as year 
    from tab 
    group by Name, Subject 
) t2 on t1.name = t2.name and t1.subject = t2.subject and t1.year = t2.year 
group by t1.Name, t1.Subject, t2.year 
+0

감사 많은이 잘 wokring입니다 ... :) –

1
WITH 
    ranked_data AS 
(
    SELECT 
    ROW_NUMBER() OVER (PARTITION BY Name, Subject ORDER BY Year, Month) AS Rank, 
    * 
    FROM 
    yourTable 
) 
SELECT 
    * 
FROM 
    ranked_data 
WHERE 
    Rank = 1 


그러나, - 모든 ... 훨씬 더 간단하게 얻을 수

SELECT Name, Subject, MAX(Date) FROM yourTable GROUP BY Name, Subject 

당신에게 다음을 사용하여 날짜를 한 달로 반올림 할 수 있습니다.
- DATEADD(month, 0, DATEDIFF(month, 0, <any date-time>))

반대의 경우도 있지만 일반적으로 내 경험은 날짜를 깨뜨리지 않고 단일 필드로 유지하는 것입니다.

-1

하나의 솔루션 :

select Name, Subject, Month as Latest_Month_Attended, Year as Latest_Year_Attended 
from tab 
group by Name, Subject 
having 
    max(month) and max(Year); 

결과 :

Name  Subject  Latest_Month_Attended Latest_Year_Attended 
---------- ---------- --------------------- -------------------- 
Raju  Computers 12      2011     
Raju  English  6      2011     
Raju  History  6      2011     
Raju  Physics  10      2010     
Ravi  Chemistry 10      2010     
Ravi  Mathematic 10      2010     
Sunil  English  5      2011