对 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
我需要根据 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