• This is possible in sql 2000 as well.

    select 1 as id, '1st' as position into #data union all

    select 1 as id, '2nd' as position union all

    select 1 as id, '3rd' as position union all

    select 1 as id, '4th' as position union all

    select 1 as id, '5th' as position union all

    select 2 as id, '1st' as position union all

    select 2 as id, '2nd' as position union all

    select 2 as id, '3rd' as position union all

    select 2 as id, '4th' as position union all

    select 2 as id, '5th' as position

    select *

    from #data d1

    where position in (select top 3 position from #data d2 where d1.id = d2.id order by position)