HAVING count(*) 不能和for all entries 一起用?
时间: 2024-04-23 08:24:52 浏览: 15
是的,HAVING count(*) 不能和for all entries一起使用。
FOR ALL ENTRIES是一种用于在SELECT语句中指定一个内部表的关键字,以便从内部表中检索过滤条件。而HAVING count(*)是一种用于在GROUP BY子句中计算分组中行数的聚合函数。这两个语句的使用场景完全不同,无法同时使用。
如果您需要使用HAVING count(*)和FOR ALL ENTRIES,可以通过在SELECT语句中包含子查询并在子查询中使用FOR ALL ENTRIES来实现。
相关问题
HAVING count(*) 不能和for all entries 一起用,我如何在子查询里用for all entries in
如果您需要在子查询中使用FOR ALL ENTRIES,可以按照以下步骤进行操作:
1.首先,编写一个SELECT语句来检索内部表中的过滤条件。
2.然后,使用FOR ALL ENTRIES子句将内部表与SELECT语句中的WHERE子句关联起来。
3.最后,在子查询中使用包含WHERE子句的SELECT语句。
以下是一个示例代码,演示如何在子查询中使用FOR ALL ENTRIES:
```
SELECT *
FROM table1
WHERE col1 IN (
SELECT col1
FROM table2
WHERE col2 = 'value'
AND col3 IN ( 'value1', 'value2', 'value3' )
AND col4 IN ( SELECT col4 FROM table3 WHERE col5 = 'value' )
AND col6 IN ( SELECT col6 FROM table4 WHERE col7 IN ( 'value1', 'value2' ) )
)
```
在上面的示例中,子查询使用FOR ALL ENTRIES关键字与table2关联,并检索与WHERE子句中指定的条件匹配的数据。然后,SELECT语句在WHERE子句中使用子查询来过滤table1表中的数据。
abap FOR ALL ENTRIES IN如何与SUBSTRING()一起使用
在 ABAP 中,可以使用 FOR ALL ENTRIES IN 语句与 SUBSTRING 函数一起使用。
FOR ALL ENTRIES IN 语句可以用于根据一个内部表的值来选择另一个内部表中的行。而 SUBSTRING 函数则可以用于提取字符串的子字符串。
下面是一个示例:
```
DATA: lt_values TYPE STANDARD TABLE OF string,
lt_result TYPE STANDARD TABLE OF string.
lt_values = VALUE #( ( '123' ) ( '456' ) ( '789' ) ).
SELECT *
FROM database_table
WHERE field LIKE CONCATENATE '%' lt_values[ 1 ] '%' INTO TABLE lt_result
FOR ALL ENTRIES IN lt_values
WHERE field LIKE CONCATENATE '%' SUBSTRING( lt_values[ sy-tabix ] FROM 2 FOR 2 ) '%'.
```
在上面的示例中,首先定义了一个内部表 lt_values,其中包含了三个字符串。然后使用 FOR ALL ENTRIES IN 语句选择 database_table 表中符合条件的行,并将结果存储在 lt_result 内部表中。
在 WHERE 子句中,使用 CONCATENATE 函数和 lt_values[ 1 ] 来构建一个字符串模式,以查找包含字符串 '123' 的行。同时,在 FOR ALL ENTRIES IN 子句中,使用 SUBSTRING 函数从 lt_values 内部表的每个元素中提取第二个和第三个字符(即 '23'、'56' 和 '89'),并将它们用于查找符合条件的行。