Как такое провернуть без курсора?? (простая задачка)

хм...
Дата: 21.01.2009 15:39:05
имеем sql2000 и
declare @minimum int
set @minimum=6

declare @t table (id int,kolvo int)
insert into @t values (1,1)
insert into @t values (2,2)
insert into @t values (3,3)
insert into @t values (4,2)
insert into @t values (5,3)
insert into @t values (6,6)

idkolvo
11
22
33
42
53
66


нужно получить

idkolvo
42
53
66


т.е. первые три строчки (order by [id]) отсекаются. т.е. складываются последовательно [kolvo] от начала, до тех пор, пока сумма сложений [kolvo] не достигнет переменной @minimum т.е. 6

курсором ясное дело как это сделать, а можно ли обойтись одним запросом?
iap
Дата: 21.01.2009 15:43:58
Кореллированный подзапрос, например.
Glory
Дата: 21.01.2009 15:49:23
хм...

курсором ясное дело как это сделать, а можно ли обойтись одним запросом?

Ну так посчитайте для каждой записи сумму записей с меньшим id
_djХомяГ
Дата: 21.01.2009 16:01:23
Нарастающий итог что ли?

select t.id,max(t.kolvo),sum(t1.kolvo)
from #test t join #test t1
on t.id>=t1.id
group by t.id
having sum(t1.kolvo)>6
Алексей Дружинин
Дата: 21.01.2009 16:29:47
Ну да, нарастающий итог.. Как вариант -

SELECT t1.[id], t1.[kolvo]
FROM @t t1
INNER JOIN @t t2 ON
	t2.[id] <= t1.[id]
GROUP BY t1.[id], t1.[kolvo]
HAVING SUM(t2.[kolvo]) > @minimum
ORDER BY t1.[id]
хм...
Дата: 21.01.2009 16:33:59
да, лапухнулся.

всем спасибо