【问题标题】:Get count of distinct key field values from CDS从 CDS 获取不同键字段值的计数
【发布时间】:2023-04-08 08:06:01
【问题描述】:

我想问一下是否可以使用 ABAP 动态获取不同字段的计数。

我们 CDS 中的 key 有 9 个字段,数量很多,但由于历史决定,无法拆分。我需要的是如下代码:

select count(distinct (lv_requested_elements)) from CDS_VIEW; 

select count(*) from (select distinct lv_requested_elements from CDS_VIEW);

我知道可以将选择读入内存并获得sy-dbcnt,但我想确定没有其他选项。

【问题讨论】:

  • 您有什么 SAP_BASIS 版本?当您已经获得 7.51 时,您可以使用 WITH...SELECT 来执行此操作。
  • 我们有最新版本,所以 7.51 就可以了。您能否发送任何页面或文档如何使用 WITH...SELECT 提供这样的声明?如果不将值读入内存,我无法提供。

标签: sql count abap cds


【解决方案1】:

我假设最简单直接的方法是将最小的字段读入内存,然后按分组(区分)行计数:

DATA(fields) = ` BLART, BLDAT, BUDAT`.

DATA: lt_count TYPE TABLE OF string.
SELECT (fields(6))
  INTO TABLE @lt_count
  FROM ('BKPF')
 GROUP BY (fields).

DATA(count) = sy-dbcnt.

提到的CTE 使用相同的内存读取,因此您不会获得任何性能提升:

公用表表达式创建一个临时表格结果集,可以在 WITH 语句执行期间访问该结果集

如果您要经常计算此组合键,我建议创建消费或嵌套 CDS 视图,它会即时执行此操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-05
    • 2021-02-10
    • 1970-01-01
    • 2011-03-26
    • 2014-10-03
    相关资源
    最近更新 更多