Выберите промежуточный итог, пока не будет достигнута конкретная сумма
Я пытаюсь выбрать первые n значений rowid из следующей табличной переменной, которая приблизит меня к сумме (itemcount) 200 000 без пересечения этого порога. Если бы я смотрел на это вручную, я бы просто взял верхние 3 ряда. Я не хочу использовать курсор, если не существует способа, основанного исключительно на множествах.
Что является хорошим способом на основе множеств, чтобы получить все значения rowid "сумма, пока / пока" я получаю промежуточный итог 200 000?
Я посмотрел на "промежуточные итоги" вhttp://www.1keydata.com/sql/sql-running-totals.html но, похоже, это не сработает, потому что в реальной таблице около 500 тыс. строк.
Вот что я пробовал до сих пор:
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
Использование SQL Server 2008. Я перейду на 2012 при необходимости.