This should do it....--Using Test table Create Table TEST (Symbol char(3),Total bigint,FreqCnt int, recordnum int identity (1, 1) )Insert into TEST(Symbol, Total, FreqCnt)SELECT 'NOK','6000000','3' UNION ALLSELECT 'NOK','1000000','2' UNION ALLSELECT 'NOK','3000000','2' UNION ALLSELECT 'NOK','400000','2' UNION ALLSELECT 'NOK','2000000','2' UNION ALLSELECT 'NOK','30000000','1' UNION ALLSELECT 'NOK','37000000','1' UNION ALLSELECT 'NOK','10000000','1' UNION ALLSELECT 'NOK','28000000','1' UNION ALLSELECT 'NOK','5000000','1' UNION ALLSELECT 'NOK','8000000','1' UNION ALLSELECT 'NOK','15000000','1' UNION ALLSELECT 'NOK','17000000','1' UNION ALLSELECT 'NOK','36000000','1' UNION ALLSELECT 'SEK','16000000','7' UNION ALLSELECT 'SEK','3000000','5' UNION ALLSELECT 'SEK','8000000','3' UNION ALLSELECT 'SEK','20000000','2' UNION ALLSELECT 'SEK','150000000','2' UNION ALLSELECT 'SEK','300000','1' UNION ALLSELECT 'SEK','17000000','1' UNION ALLSELECT 'SEK','10000000','1' UNION ALLSELECT 'SEK','170000000','1' UNION ALLSELECT 'SEK','26000000','1' UNION ALLSELECT 'SEK','6000000','1' UNION ALLSELECT 'SEK','190000000','1' UNION ALLSELECT 'SEK','37000000','1' UNION ALLSELECT 'SEK','60000000','1' UNION ALLSELECT 'SEK','5000000','1'--======================With MyCTE As (SELECT Symbol, Total, FreqCnt ,(select sum(FreqCnt) from Test where recordnum <= a.recordnum and Symbol = a.Symbol ) RunningTotal, (select 0.95 * cast(sum(FreqCnt) as float) from Test where Symbol = a.Symbol) PercentileTotal from Test a) select * from MyCTEwhere RunningTotal <= PercentileTotalOrder by Symbol, FreqCnt Desc