使用按关键词进行细分4GL进行中

问题描述 投票:3回答:1

在Progress 4GL中break by关键字的确切用法是什么?从OpenEdge的关键字帮助中我没有一个清晰的主意。bybreak by关键字之间的主要区别是什么。

progress-4gl openedge
1个回答
20
投票

BREAK或BREAK BY关键字可对查询进行分组,而BY仅对结果进行排序。 SQL等效项是GROUP BY。

BREAK BY允许在结果迭代中使用多个关键字:

第一个/最后一个

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

第一/最后

如果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  | 
© www.soinside.com 2019 - 2024. All rights reserved.