GROUP by aggregation不计算SUM

GROUP by aggregation does not calculate SUM

我必须根据 WERKSDATUMUZEITAMUNT 字段的查询 SUM 中进行聚合 我试图建立一个小组但没有成功 我有这样的错误:

我的代码有什么问题?

那是我的 ABAP 代码:

 DATA: gt_compr TYPE TABLE OF yrt_h_sales
 SELECT    werks, extnb, datum, uzeit, sumvt, deprt, dpext, SUM( amunt ) AS amunt
  INTO      CORRESPONDING FIELDS OF TABLE @gt_compr
  FROM      yrt_h_sales 
  WHERE     werks IN @so_werks
  AND       datum IN @so_datum
  GROUP BY  werks, datum, uzeit.

在我更正并执行此操作后,代码如下所示:

 SELECT    werks,  datum, uzeit, extnb, deprt, dpext, SUM( amunt ) AS amunt
  INTO      CORRESPONDING FIELDS OF TABLE @gt_compr
  FROM      yrt_h_sales
  WHERE     werks IN @so_werks
  AND       datum IN @so_datum
  GROUP BY  werks, datum, uzeit,  extnb, deprt, dpext.

所以我不再有编译错误,但聚合仍然无法正常工作!我在 AMUNT

上有一个没有求和的 43 行结果

P.S。这是我的 table 的结构:

您的观察结果与 documentation 一致(以及我迄今为止在我使用过的任何其他 RDBMS 中看到的结果):

If aggregate expressions are used, any column identifiers that are not included as arguments of an aggregate function must be included after the addition GROUP BY.

以时间字段 UZEIT 为例:您可以告诉系统通过将其添加到 GROUP BY 来汇总(在您的情况下,总结)同一时间点的所有金额子句,或者您也可以应用聚合函数(SUM 在这里没有任何意义,但 MIN 可能),或者您可以完全省略该字段。您可以 not 让它悬空而无需进一步说明 - 该字段要么需要是 GROUP BY 创建的新键集的一部分,要么必须对其应用聚合函数以便系统知道如何处理组中可能出现的多个数据集。

(这是基本 SQL 顺便说一句,不是 ABAP-specific 知识。)

删除相应的字段并将结果放入 TABLE