SELECT查询中的ABAP与Group By相加

shm*_*lki 3 sql sap abap group-by

我必须在我的查询SUM AMUNT字段中聚合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.
Run Code Online (Sandbox Code Playgroud)

我纠正它后,我做了这个,代码如下:

 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.
Run Code Online (Sandbox Code Playgroud)

所以我不再有编译错误,但聚合仍然无法正常工作!我在AMUNT列上没有总和的43行结果

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

vwe*_*ert 6

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

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

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

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

  • 我想在评论中写"Amen",但stackoverflow不允许我发布一个不到15个字符. (5认同)