我必须根据WERKS,DATUM和UZEIT在我的AMUNT字段的查询总和中进行聚合。我尝试进行分组,但没有成功,我有一个类似这样的错误:

我的代码中有什么问题?
这是我的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行的不带sum的结果
附言:这是我的表格的结构:

发布于 2017-02-16 14:56:53
您的观察结果与documentation一致(以及到目前为止我在使用过的任何其他RDBMS中所看到的):
如果使用聚合表达式,则在加法
GROUP BY之后必须包括未作为聚合函数的参数包括的任何列标识符。
以时间字段UZEIT为例:您可以通过将其添加到GROUP BY子句来告诉系统聚合(在您的情况下,求和)同一时间点的所有金额,或者您也可以应用聚合函数(SUM在这里没有任何意义,但MIN可能有意义),或者您可以完全省略该字段。您不能在没有进一步规范的情况下将其留在那里-该字段要么需要是GROUP BY创建的新键集的一部分,要么必须对其应用聚合函数,以便系统知道如何处理组中可能出现的多个数据集。
(这是基本的SQL btw,而不是特定于ABAP的知识。)
发布于 2021-04-20 22:16:52
删除的相应字段,仅将结果放入表中
https://stackoverflow.com/questions/42255106
复制相似问题