正在使用Break by keyword 4GL

时间:2013-11-18 05:37:55

标签: progress-4gl openedge

4GL中关键字中断的确切用法是什么? 我没有从开放边缘的关键字帮助中获得清晰的想法。 by和break by by关键字的主要区别是什么。

1 个答案:

答案 0 :(得分:16)

BREAK或BREAK BY关键字可以在查询中进行分组,而BY只对结果进行排序。 SQL等价是GROUP BY。

BREAK BY允许在生成的迭代中使用多个关键字:

第一OF / LAST-OF

如果是DO,FOR EACH或REPEAT的当前迭代,则返回TRUE值。 。 。 BREAK块是新中断组的第一个/最后一个迭代,并修改所有三个块类型

<强> FIRST / LAST

如果是DO,FOR EACH或REPEAT的当前迭代,则返回TRUE值。 。 。 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  |