Seleccione el total acumulado hasta que se alcance el SUM específico
Estoy tratando de seleccionar los primeros n valores de rowid de la siguiente variable de tabla que me acercarán a una suma (itemcount) de 200,000 sin cruzar ese umbral. Si estuviera viendo esto manualmente, solo tomaría las 3 primeras filas. No quiero usar un cursor a menos que no haya una forma basada en conjuntos puros.
¿Cuál es una buena forma basada en conjuntos para obtener todos los valores de rowid "suma while / hasta" llego a un total acumulado de 200,000?
Miré "totales acumulados" enhttp://www.1keydata.com/sql/sql-running-totals.html pero eso no parecía que funcionaría porque la tabla real tiene alrededor de 500 mil filas.
Aquí está lo que he intentado hasta ahora:
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
Usando SQL Server 2008. Cambiaré a 2012 si es necesario.