sql - 从 CDS 获取不同键字段值的计数
问题描述
我想问一下是否可以使用 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
,但我想确保没有其他选项。
解决方案
我假设最简单直接的方法是将最小的字段读入内存,然后按分组(区分)行计数:
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 视图,它会即时执行此操作。
推荐阅读
- spring - 什么是 Spring Social Twitter 状态?
- python-3.x - cx_Oracle.DatabaseError:ORA-12170:TNS:发生连接超时
- java - 如何将具有两列以上的 Cucumber DataTable 转换为可更改的列表列表?
- kendo-grid - 如何在剑道网格上切换/重置 event.preventDefault()
- python - 删除基本网址
- python - 无法安装 django_messages 应用程序
- php - foreach 循环为给定数组循环一次
- arrays - 链接到Angular中数组的输入值的行为不一致
- c# - 为什么表单属性不显示在 asp.net 标签上?
- java - 数组映射上的 Java ArrayIndexOutOfBounds 异常