Использование групировок из VIP |
<оператор-группировки> = groupBy [ <имя-группы> ] : <список-ключевых-полей> <оператор>
Данный итератор может использоваться только внутри цикла по таблице _loop (см. "Оператор цикла по таблице. "). Действие итератора groupBy заключается в запоминании значения ключевых полей группировки в первом прохождении цикла. При дальнейших итерациях значения сравниваются, и если они не совпадают, то происходит выход из цикла. Особенностью является использование вложенных итераторов. В этом случае, проверка значений ключевых полей группировки будет происходить от внешнего итератора к внутреннему, а выходы из циклов по стандартной схеме.
_loop aTable { <оператор-1> groupBy g1 : aTable f1 { <оператор-2> groupBy g2 : aTable f2 { <оператор-3> } <оператор-4> } <оператор-5> }
Последовательность данных:
f1 |
f2 |
f3 |
1 |
1 |
1 |
1 |
2 |
1 |
2 |
2 |
1 |
Последовательность выполнения операторов будет следующая:
вход _loop aTable <оператор-1> вход groupBy g1 : aTable f1 <оператор-2> вход groupBy g2 : aTable f2 <оператор-3> итерация _loop aTable выход groupBy g2 : aTable f2 <оператор-4> <оператор-2> вход groupBy g2 : aTable f2 <оператор-3> итерация _loop aTable выход groupBy g2 : aTable f2 <оператор-4> выход groupBy g1 : aTable f1 <operator-5> <оператор-1> вход groupBy g1 : aTable f1 <оператор-2> вход groupBy g2 : aTable f2 <оператор-3> итерация _loop aTable выход groupBy g2 : aTable f2 <оператор-4> выход groupBy g1 : aTable f1 <operator-5> выход _loop aTable
Атлантис 5.03