在Progress4GL中break by关键字的确切用法是什么?我没有从OpenEdge的关键字help中得到一个清晰的概念。by关键字和break by关键字的主要区别是什么?
发布于 2013-11-18 15:33:17
BREAK或BREAK BY关键字启用查询中的分组,而BY仅对结果进行排序。SQL等效项是GROUP BY。
BREAK BY允许在生成的迭代中使用几个关键字:
FIRST-OF/LAST-OF
如果DO、FOR EACH或REPEAT的当前迭代返回TRUE值。。。中断块是新中断组的第一次/最后一次迭代,并修改所有三种块类型
第一个/最后一个
如果DO、FOR EACH或REPEAT的当前迭代返回TRUE值。。。BREAK块是该块的第一次/最后一次迭代。
您还可以使用许多聚合函数。有关AVERAGE、COUNT、MAXIMUM、MINIMUM、TOTAL、SUB-AVERAGE、SUB-COUNT、SUB-MAXIMUM、SUB-MINIMUM和SUB-TOTAL的信息,请参阅联机帮助。
假设你有这个表:
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 | https://stackoverflow.com/questions/20040826
复制相似问题