2010-07-29 4 views
1

Я пытаюсь создать запрос, который вытащит первые 10 записей каждого идентификатора в таблице.Выберите первые n записей для каждого отдельного идентификатора в SQL Server 2008

Нечто подобное звучит:

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  Column1 
1   ab 
1   ac 
2   df 
2   gf 
3   wa 
3   hgh 
4   fgfgg 
+0

Как вы определяете "первые 10"? Как вы определяете последовательность, когда идентификатор один и тот же? – 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

Yep! Спасибо, работал так, как мне было нужно. У меня было небольшое смешение на моем конце, но я понял это с небольшим исследованием и ссылкой. – Mikecancook

Смежные вопросы