Abap 按聚合分组不计算总和

Abap 按聚合分组不计算总和,abap,opensql,Abap,Opensql,我必须根据WERKS、DATUM和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

我必须根据
WERKS
DATUM
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.
因此,我不再有编译错误,但聚合仍然不起作用!我在
AMUNT
列中有一个43行的结果,没有求和

注意:这是我的表格结构:

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

如果使用聚合表达式,则不使用 包含为聚合函数的参数必须包含在 添加的
分组

以时间字段
UZEIT
为例:您可以通过将其添加到
GROUP by
子句,告诉系统聚合(在您的情况下,求和)同一时间点的所有金额,或者您也可以应用聚合函数(
sum
在这里没有任何意义,但是
MIN
可能),或者您可以完全忽略该字段。如果没有进一步的规范,您不能让它悬而未决-该字段需要是由
groupby
创建的新密钥集的一部分,或者必须对其应用聚合函数,以便系统知道如何处理组中可能出现的多个数据集


(这是基本的SQL btw,而不是ABAP特定的知识。)

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

是否尝试先指定键列?显然,
groupby
order有。请添加
yrt\u h\u sales
的表结构或打开水晶球系统连接,以便我们自己查看。。。。没有足够的信息来回答,所以我们需要一些魔法来获得更多的细节。以什么方式它不起作用?您能否发送一些表中记录的数据样本来指出求和失败的具体位置?查询看起来不错,所以我认为问题出在其他地方,或者根本没有问题。无论如何,如果您只想按WERKS、DATUM、UZEIT进行分组,同时想显示主键的其他列,那么问题不在于编码,它在您的逻辑中的某个地方,因为这样的构造没有任何意义,并且语义不正确。您正在按表中的所有键字段进行分组,因此实际上不会进行聚合。按照@vwegert的答案建议操作,并为您不想分组的三个字段添加聚合器,例如MIN(EXTNB)等。这并不能回答问题。一旦你有足够的钱,你将能够;相反-