Tohle pomocí TOP neuděláte - ten se aplikuje na celkový výstup. Vám pomůže ranking funkce ROW_NUMBER, která čísluje řádky a číslování dokáže rozdělit podle kritérií definovaných parametrem PARTITION BY. Definujete tedy podle čeho chcete řadit (například Id) a pak podle čeho chcete udělat skupiny, které se číslují samostatně (tedy ParentId předpokládám). Podle čísel řádků pak můžete filtrovat výsledek. Například:
select *
from (
select
*,
ROW_NUMBER() OVER (PARTITION BY [ParentId] ORDER BY [Id] ASC) AS groupRowNumber -- cislovat radky od nejmensiho po nejvetsi [Id], samostatne cislovat skupiny podle [ParentId]
FROM [Tabulka]
) src
where
groupRowNumber <= 2 -- maximalni pocet radku od kazde skupiny
order by
[ParentId], groupRowNumber
|