Ну, то, что Вы вышли за пределы системных ограничений FoxPro не удивительно. Напомню, что FoxPro ограничивается размером таблицы в 2ГБ или количеством записей в 1 миллиард (1 и 9 нулей). Смотря что раньше кончится. У Вас декартово произведение. Т.е. надо возвести в квадрат количество записей исходной таблицы. Вот и смотрите, какой размер и количество записей получилось.
А решение очевидное. Отказаться от Select-SQL и перейти к сканированию
* Предварительная выборка решает несколько задач
* Формирует итоговый курсор нужной структуры
* и упорядочивает записи таким образом, чтобы записи одной группы
* оказались рядом и в нужной последовательности (order by)
select
a.schet, ;
a.filter_uch, ;
a.id, ;
a.sum, ;
a.opl, ;
a.sum - a.sum as temp, ;
000000.00 as dolg ;
from zzzzz3 ;
into cursor zzzzz4 readwrite ;
order by 1,2,3
local lvSchetPrev, lvFilter_uchPrev, lvIdPrev, lnSumGroup
* Даю переменным пустые значения, заведомо не существующие в таблице, но нужного типа
* это необходимо для корректного входа в цикл
lvSchetPrev = ''
lvFilter_uchPrev = ''
lvIdPrev = 0
* Собственно расчет нарастающего итога
* Для первой строки группы нарастающий итог остается равным нулю
select zzzzz4
go top
scan
if m.lvSchetPrev <> zzzzz4.Schet OR m.lvFilter_uchPrev <> zzzzz4.Filter_uch OR m.lvIdPrev <> zzzzz4.Id
m.lvSchetPrev = zzzzz4.Schet
m.lvFilter_uchPrev = zzzzz4.Filter_uch
m.lvIdPrev = zzzzz4.Id
m.lnSumGroup = zzzzz4.Sum
else
replace temp with m.lnSumGroup
m.lnSumGroup = m.lnSumGroup + zzzzz4.Sum
endif
endscan