SELECT查询中的ABAP与Group By相加

时间:2017-02-15 16:37:10

标签: sql group-by sap abap

我必须根据AMUNTWERKSDATUM在我的UZEIT字段的查询和中汇总 我试图创建一个没有任何成功的小组 我有这样的错误:enter image description here

我的代码中有什么问题?

这是我的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行结果

P.S。这是我桌子的结构: enter image description here

2 个答案:

答案 0 :(得分:6)

您的观察结果与documentation(以及我目前在其他任何与之合作的RDBMS中看到的内容)一致:

  

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

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

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

答案 1 :(得分:-2)

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