2010-07-29 2 views
1

테이블의 각 ID의 처음 10 개 레코드를 가져 오는 쿼리를 만들려고합니다.SQL Server 2008의 각 고유 ID에 대해 첫 번째 n 레코드 선택

select distinct top 2 id, column1 from table group by id, column1 


ID  Column1 
1   ab 
1   ac 
1   ad 
2   df 
2   gf 
2   dfdf 
2   hgf 
3   wa 
3   hgh 
3   dfgg 
4   fgfgg 

그래서 위의 표는이 같은 각 ID의 처음 두 결과를 반환 :이 같은

뭔가 소리

ID  Column1 
1   ab 
1   ac 
2   df 
2   gf 
3   wa 
3   hgh 
4   fgfgg 
+0

당신은 어떻게 "처음 10"를 정의 하는가? ID가 같을 때 어떻게 순서를 결정합니까? – bobs

답변

4

ROW_NUMBER() 일의이 유형에 매우 유용하다 .

http://msdn.microsoft.com/en-us/library/ms186734.aspx

SELECT * FROM (
SELECT 
    ROW_NUMBER() OVER(PARTITION BY ID ORDER BY ID) as RowNum, 
    ID, 
    Column1 
FROM 
    Table 
) MyData 
WHERE RowNum < 10 
+1

ROW_NUMBER이 (가) 당신이 찾고있는 것입니다. – ScottE

+0

죄송합니다 ... 편집 됨 –

+0

예! 고마워, 내가 필요한 것처럼 잘 했어. 나는 약간의 혼란이 있었지만, 약간의 연구와 링크를 통해 알아 냈다. – Mikecancook