CDS视图中的聚合函数

在CDS中可以使用SQL中的一些常的聚合函数,比如;MINMAXSUMAVGCOUNT,等,以下具体介绍

MIN( operand ):

Returns the smallest value in operand,返回操作数中的最小值

MAX( operand )

Returns the greatest value in operand,返回操作数的最大值。

SUM( operand )

Calculates the sum of the values of operand,计算操作数的值之和

AVG( operand )

Calculates the average value of the values of operand,计算操作数的平均值

COUNT( *)

Returns the number of entries in the result set,返回结果集中的条目数

COUNT( DISTINCT operand )

Returns the number of distinct values of operand,返回操作数的不同值的数量

  • An aggregate expression calculates a single value from an operand (operand) by calling an aggregate function for multiple rows of a results set. The figure above shows the possible aggregate functions.
  • Aggregate expressions can be used in the field list of a SELECT statement or in an (optional) HAVING clause.
  • 聚集表达式通过为结果集的多行调用聚集函数来从操作数(操作数)计算单个值。上图显示了可能的聚合函数。
  • 可以在SELECT语句的字段列表或(可选)HAVING子句中使用聚合表达式。

Note: For aggregate functions in the field list, it is mandatory to provide an alias (addition AS).

注意:对于字段列表中的聚合函数,必须提供别名(附加AS)。

1.关于结果类型,适用以下规则

  • 表达式AVG的结果类型为FLTP类型。
  • 表达式COUNT和COUNTC(DISTINCT…)返回一个整数值。
  • 表达式MIN,MAX和SUM具有与操作数相同的结果类型。

通常,操作数是当前CDS视图的数据源中的列或字段。操作数的其他选项是:

  • 文字
  • 区分大小写
CDS视图中的聚合函数 - 第1张  | 优通SAP

上面的示例显示了每个聚合函数的一个示例。字段列表的最后两个元素是替代操作数的示例

2.分组Group BY后聚合

加成GROUP BY将结果集中那些与由field],field2,…指定的元素中内容相同的行分组为一行。必须使用与数据源中的字段相同的名称来指定字段。

必须在SELECT列表中使用聚合表达式定义在GROUP BY之后未指定的CDS视图的任何元素。相反,如果SELECT列表中包含聚合表达式,并且必须在GROUP BY之后指定所有未使用聚合表达式定义的元素,则必须使用GROUP BY。在GROUP BY之后不能指定文字和其他表达式。如果使用聚合表达式将预定义函数的表达式或调用指定为SELECT列表的元素,则必须在GROUP BY子句中指定所有使用的字段。

CDS视图中的聚合函数 - 第2张  | 优通SAP

2.1.暗示:

ABAP DDL源代码编辑器能够从视图的元素列表中自动生成正确的GROUP BY子句。您可以按以下方式使用此功能:

  • 转到编辑器下面的“问题”选项卡。
  • 展开节点错误。
  • 右键单击错误消息GROUP BY子句丢失,然后选择快速修复。
  • 在下面的对话框窗口中,选择“完成”。

2.2.CDS中ABAP CDS的限制

在CDS中,使用聚合函数有一些限制。请在下面找到。

聚合函数的参数

  • ‘仅字段,文字,区分大小写
  • 没有其他表达式或函数(例如avg(seatsmax — seatocc))
  • 使用“在视图上查看”汇总计算结果

函数SUM的参数

  • 必须是数字
  • 不支持INT8,DFL16,DFL34。

空值

不在汇总中考虑

CDS查看扩展

字段列表中具有聚合的CDS视图无法扩展