Hallo,
in neueren Versionen gibt es die Window-Funktion sum() over ...
In 7.1 z.B. geht es auch so:
with data (kd,ums) as (values
(1, 50000),(2, 20000),(3, 11000),(4, 2000),(5, 3000),(6, 3000),
(7, 8000), (8, 3000)),
parm (maxums,bestums) as
(select sum(ums),int(sum(ums) * 0.8)
from data),
sort (kd,ums,rn) as
(select kd,ums,
row_number() over (order by ums)
from data),
akku (umssum,kd,ums,cr) as
(select ums,kd,ums, rn
from sort
where rn = 1
union all
select a.umssum + s.ums,
s.kd,
s.ums,
s.rn
from akku a
inner join sort s on a.cr + 1 = s.rn)
select kd,ums
from akku
cross join parm
where umssum >= (maxums - bestums)
order by ums desc