2012-06-19 4 views
2

2 열 사이의 조합을 쿼리하는 동안 결과를 제한하는 데 도움이되는 도움을 찾고 있습니다. 여기에 내가 함께 일하고 테이블의 종류의 예입니다 ..2 열의 조합 레코드 제한

id name group state 
1 Bob A  NY 
2 Jim A  NY 
3 Dan A  NY 
4 Mike A  FL 
5 Tim B  NY 
6 Sam B  FL 
7 Brad B  FL 
8 Glen B  FL 
9 Ben C  FL 

내가 "그룹"과 "상태"모든 조합의 모든 레코드를 표시하려고하지만, 만 최대 2 개 기록을 표시하는 제한하고 각 조합. 결과는 다음과 같아야합니다.

id name group state 
1  Bob A  NY 
2  Jim A  NY 
4  Mike A  FL 
5  Tim B  NY 
6  Sam B  FL 
7  Brad B  FL 
9  Ben C  FL 

감사합니다.

답변

3

, group가 예약어이기 때문에 당신은 항상 가장 낮은 id 물론

SELECT * 
    FROM (SELECT a.*, 
       row_number() over (partition by group, state 
             order by id asc) rnk 
      FROM your_table a) 
WHERE rnk <= 2 

groupstate 조합에 대한 두 개의 행을 원하는 가정 나는 당신의 열이 실제로 뭔가라는 가정 ... 올바른 열 이름을 사용하려면 쿼리를 조정해야합니다.