Wybierz sumę bieżącą aż do osiągnięcia określonej SUM

Próbuję wybrać pierwsze n wartości rowid z poniższej zmiennej tabeli, która spowoduje, że otrzymam wartość zbliżoną do sumy 200 000 bez przekroczenia tego progu. Gdybym patrzył na to ręcznie, wziąłbym 3 pierwsze wiersze. Nie chcę używać kursora, chyba że nie ma sposobu opartego na czystym zestawie.

Jaki jest dobry sposób na zbieranie wszystkich wartości Rowid „sum while / until” do 200 000?

Patrzyłem na „działające sumy” nahttp://www.1keydata.com/sql/sql-running-totals.html ale to nie wyglądało na to, że się uda, ponieważ prawdziwy stół ma około 500 tysięcy rzędów.

Oto, co próbowałem do tej pory:

declare  @agestuff table ( rowid int primary key , itemcount int , itemage datetime )
insert into @agestuff values ( 1 , 175000 , '2013-01-24 17:21:40' )
insert into @agestuff values ( 2 , 300    , '2013-01-24 17:22:11' )
insert into @agestuff values ( 3 , 10000 , '2013-01-24 17:22:11' )
insert into @agestuff values ( 4 , 19000 , '2013-01-24 17:22:19' )
insert into @agestuff values ( 5 , 16000 , '2013-01-24 17:22:22' )
insert into @agestuff values ( 6 , 400   , '2013-01-24 17:23:06' )
insert into @agestuff values ( 7 , 25000 , '2013-01-24 17:23:06' )

select sum(itemcount) from @agestuff  -- 245700 which is too many

select sum(itemcount) from @agestuff  
  where rowid in (1,2,3) -- 185300 which gets me as close as possible

Korzystanie z SQL Server 2008. W razie potrzeby przełączę się na 2012 rok.

questionAnswers(1)

yourAnswerToTheQuestion