2016-10-28 5 views
0

I는 각 사용자 ID에 대한 최소 pcount있는 행을 얻을 목적으로그룹화 값

userId period pcount 
a   01/03  100 
a   02/03  150 
a   03/03  200 
b   02/03  250 
...and so on.. 

다음,도록 내 테이블 구조는 사용자 ID에 대한 결과 a는

a  01/03 100 

.. 다음과 같이되어야한다 나는 기간 값을하지 않은 경우, 나는 userId를하여 테이블을 그룹화 pcount의 ID와 MIN을 선택 할 수있다.

하지만, 나뿐만 아니라 기간을 필요로하기 때문에, 내가 무엇을해야하는지 ..

나는 푸른에 SQL 서버를 사용하고 있지만, 그것은 표준 ANSI SQL 쿼리를 부탁드립니다 이렇게 변경하고 있습니다.

감사 일반적으로

+0

의 대부분과 INNER JOIN 작품을 사용하는 또 다른 방법을 통해 처리된다? –

답변

2

요청의 이러한 종류의 ROW_NUMBER

Select * From 
(
select row_number() Over(Partition by userId Order by pcount asc) as rn,* 
From yourtable 
) A 
Where Rn = 1 

사용하고있는 데이터베이스 DBMS

SELECT A.* 
FROM yourtable A 
     INNER JOIN (SELECT userId, 
          Min(pcount) AS M_pcount 
        FROM yourtable 
        GROUP BY userId) B 
       ON A.userId = B.userId 
        AND A.pcount = B.M_pcount