Можно попробовать класс-коллекцию Set, в которую вставлять суммы со знаком минус. Получится требуемый порядок сортировки. А при последующем извлечении минус, естественно, "убирать". Если у вас возможны повторяющиеся значения сумм, то можно попробовать вставлять в Set контейнеры типа [-очередная сумма; очередное значение последовательного уникального счетчика].
X++:
static void TestQuasiSelectTop(Args _args)
{
SetEnumerator en;
int a, b;
set s = new set (types::Container);
s.add([-100,1]);
s.add([-700,2]);
s.add([-200,3]);
s.add([-500,4]);
s.add([-200,5]);
en = s.getEnumerator();
while (en.moveNext())
{
[a,b] = en.current();
info(strfmt('%1 %2', -a,b));
}
}
В инфологе видим (нас, естественно, интересует только первая колонка):
700 2
500 4
200 3
200 5
100 1