Используется Break по ключевому слову в процессе 4GL

Как точно используется ключевое слово break by в Progress 4GL? Я не получаю четкого представления о помощи по ключевым словам OpenEdge. В чем основное различие между ключевыми словами by и break by.


person Nilesh Pharate    schedule 18.11.2013    source источник


Ответы (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  | 
person Jensd    schedule 18.11.2013