3

我必须根据 汇总我的AMUNT字段查询总和WERKSDATUM并且UZEIT 我尝试通过没有任何成功进行分组我有这样的错误:在此处输入图像描述

我的代码有什么问题?

那是我的 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.

所以我不再有编译错误,但聚合仍然不起作用!我有一个 43 行的结果,AMUNT列上没有总和

PS这是我的表的结构: 在此处输入图像描述

4

2 回答 2

7

您的观察与文档一致(以及到目前为止我在使用过的任何其他 RDBMS 中看到的内容):

如果使用聚合表达式,则任何未作为聚合函数参数包含的列标识符都必须包含在添加之后GROUP BY

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

(这是基本的 SQL 顺便说一句,而不是 ABAP 特定的知识。)

于 2017-02-16T06:56:53.203 回答
-2

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

于 2021-04-20T14:16:52.100 回答