2013-10-11 4 views
1

제 목표는 하나의 열에 distinct를 사용하고 모든 열을 반환하는 것입니다.하나의 열에서 distinct를 선택하고 모든 열을 반환하십시오.

내 표는 내가 id 컬럼에 구별 할 모든 세 개의 열뿐만 아니라하지 동일한 ID의의를 반환해야이

id, name, year 

1, John, 2012 

2, Jake, 2012 

3, Jenna, 2013 

1, John, 2013 

처럼, 내가 가장 최근에 기록해야합니다. 내가 필요로하는

출력 내가 sampletable는 별개의 ID, 이름, 연도를 선택이 두 명령

  1. 을 시도

    id, name, year 
    
    1, John, 2013 
    
    2, Jake, 2012 
    
    3, Jenna, 2013 
    

    입니다. 모든 행에서 별개로 수행합니다.

  2. select * 샘플 테이블 그룹에서 ID id 열만 반환하고 다른 열은 삭제합니다.

    SELECT id, name, year 
    FROM 
    (SELECT id, name, year, row_number() over (partition by id order by year desc) as r 
        FROM sampletable) S 
    WHERE S.r = 1; 
    

    플러스 등 rankdense_rank 같은 다른 순위 기능이 있습니다 : 첫 번째 결과를 당신이 올해에 의해 ID 순서로 데이터를 분할 할 수있는 윈도우 및 분석 기능을 사용하고 선택

답변

0

다른 선택을 위해. 분석 함수

 
    select t.id, t.name, t.year from t 
    join 
     (select id, max(year) year from t group by id) as S 
     on S.id=t.id and S.year = t.year 

없이

관련 문제