Използвайте ROW_NUMBER() функция за това:
SELECT *
FROM (select *,ROW_NUMBER() OVER (PARTITION BY group_id ORDER BY item_id) as RowRank
from items_in_groups
)sub
WHERE RowRank <=2
Демонстрация:SQL Fiddle
ROW_NUMBER() функцията присвоява номер на всеки ред. PARTITION BY не е задължително, но се използва за започване на номерирането отначало за всяка стойност в тази група, т.е.:ако PARTITION BY group_id след това за всеки уникален group_id стойност, номерирането ще започне отначало от 1. ORDER BY разбира се се използва за определяне на начина, по който трябва да върви броенето и се изисква в ROW_NUMBER() функция.