首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GROUP by aggregation不计算SUM

GROUP by aggregation不计算SUM
EN

Stack Overflow用户
提问于 2017-02-16 00:37:10
回答 2查看 24K关注 0票数 3

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

我的代码中有什么问题?

这是我的ABAP代码:

代码语言:javascript
复制
 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.

在我更正它并完成此操作后,代码看起来如下所示:

代码语言:javascript
复制
 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的结果

附言:这是我的表格的结构:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-16 14:56:53

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

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

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

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

票数 7
EN

Stack Overflow用户

发布于 2021-04-20 22:16:52

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

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42255106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档