对 SELECT 中的 NUMC 字段求和

SUM the NUMC field in SELECT

我需要根据 NUMC 列的总和对 table 进行分组,不幸的是,这似乎无法通过 ABAP / OpenSQL 实现。

我的代码是这样的:

    SELECT z~anln1
    FROM zzanla AS z
    INTO TABLE gt_
    GROUP BY z~anln1 z~anln2
    HAVING SUM( z~percent ) <> 100  " percent unfortunately is a NUMC -> summing up not possible

由于我无法更改 table 本身,最佳/最简单的做法是什么?

不幸的是,NUMC 类型被描述为数字文本,所以最后它以 VARCHAR 的形式进入数据库,这就是为什么像 SUM 或 [=13 这样的函数=]无法使用。

这完全取决于您的 table 有多大。如果它相当小,您可以将组字段和求和值放入内部 table,然后使用 COLLECT 语句对其求和,并最终删除总和等于 100% 的行。

我没有找到顺利的解决方案。 我所做的是复制内部 table 中的所有内容,循环将 NUMC 值转换为 DEC 值。分组和总结在这一点上起作用了。 最后,我将 DEC 值转换回 NUMC 值。

一种解决方案是使用更合适的类型定义 table 中的字段。

NUMC 通常用于关键字段 - 如文档编号,永远没有理由将它们加在一起。

好久不见了。我回到这个 post,因为有人投票赞成我原来的答案。我正在考虑编辑我的旧答案,但我决定 post 一个新答案。由于这个问题是在 2017 年提出的,所以有一些限制,但现在可以通过在新的 OpenSQL 中使用 CAST 函数来完成。

SELECT z~anln1
FROM zzanla AS z
INTO TABLE @gt_
GROUP BY z~anln1, z~anln2
HAVING SUM( CAST( z~percent AS INT4 ) ) <> 100