Как точно используется ключевое слово break by
в Progress 4GL? Я не получаю четкого представления о помощи по ключевым словам OpenEdge. В чем основное различие между ключевыми словами by
и break by
.
Используется Break по ключевому слову в процессе 4GL
Ответы (1)
Ключевое слово BREAK или BREAK BY позволяет группировать запросы, тогда как BY только сортирует результат. Эквивалент SQL - GROUP BY.
BREAK BY позволяет использовать несколько ключевых слов внутри итоговой итерации:
ПЕРВЫЙ / ПОСЛЕДНИЙ
Возвращает значение ИСТИНА, если текущая итерация операций DO, FOR EACH или REPEAT. . . Блок BREAK является первой / последней итерацией для новой группы разрывов и изменяет все три типа блоков.
ПЕРВЫЙ / ПОСЛЕДНИЙ
Возвращает значение ИСТИНА, если текущая итерация операций DO, FOR EACH или REPEAT. . . Блок BREAK - это первая / последняя итерация этого блока.
Вы также можете использовать ряд агрегатных функций. См. Онлайн-справку для СРЕДНЕГО, СЧЕТЧИКА, МАКСИМАЛЬНОГО, МИНИМАЛЬНОГО, ИТОГО, ВСПОМОГАТЕЛЬНОГО, ВСПОМОГАТЕЛЬНОГО, ПОДСЧЕТА, ПОЧТОВОГО МАКСИМУМА, ПОМНИМУМА и ПОДСЧЕТЧИКА.
Допустим, у вас есть эта таблица:
Amount | Id
-----------
1 | 1
2 | 1
10 | 2
3 | 2
-1 | 3
0 | 3
И несколько примеров:
/* Sorting based on amount. */
FOR EACH table by amount:
DISPLAY amount id.
END.
/* Will display */
Amount | Id
-----------
-1 | 3
0 | 3
1 | 1
2 | 1
3 | 2
10 | 2
/* BREAK example */
FOR EACH table BREAK BY id BY amount:
IF FIRST-OF(id) THEN DO:
DISPLAY "First of".
END.
DISPLAY amount id.
END.
/* Will display */
Amount | Id |
-----------------
1 | 1 | First of
2 | 1 |
3 | 2 | First of
10 | 2 |
-1 | 3 | First of
0 | 3 |