gpt4 book ai didi

duplicates - DELETE ADJACENT DUPLICATES 不会删除重复项

转载 作者:行者123 更新时间:2023-12-04 22:48:50 32 4
gpt4 key购买 nike

我有一个内部表,里面有 108 个条目。从 9 到 9 个条目重复条目,我想删除这些重复项。由于它们完全相同,我使用了 delete adjacent duplicates from itab comparing all fields .也试过没有 comparing all fields .没有成功。
如果有帮助,我的表有 9 个字段:bukrs、hkont、gjahr、belnr、budat、waers、shkzg、wrbtr、dmbtr 和 dmbe2。他们来自 BSIS,他们也是这个顺序。
这是DO SELECT enter code here 所在的循环.我已经把 DELETEDO环形。
二首SELECT的工作正常,属于以前存在的代码。

DO 12 TIMES.
lv_aux = lv_aux + 1.
lv_tamanho = STRLEN( lv_aux ).
IF lv_tamanho = 1.
CONCATENATE '0' lv_aux INTO lv_aux.
ENDIF.
CONCATENATE p_gjahr lv_aux '01' INTO z_v_first_day.

PERFORM get_last_day_of_month USING z_v_first_day
CHANGING lv_last_day.

" some other code irrelevant to the issue

SELECT bukrs hkont gjahr belnr budat waers shkzg dmbtr wrbtr dmbe2 FROM bsis
APPENDING CORRESPONDING FIELDS OF TABLE gt_bancbsis
WHERE hkont = '0051100001'
AND bukrs EQ p_bukrs
AND budat <= lv_last_day.

" some other code irrelevant to the issue
ENDDO.

DELETE ADJACENT DUPLICATES FROM gt_bancbsis COMPARING ALL FIELDS.
这是dubugger中内表gt_bancbsis的图片。
itab in the debugger

最佳答案

ADJACENT声明中 DELETE ADJACENT DUPLICATES有一个很好的理由:它指出只删除彼此相邻的重复行。这在 online keyword documentation 中也有说明。 :

Rows are considered to be duplicate if the content of neighboring row is the same in the components examined. In the case of multiple duplicate rows following one another, all the rows (except for the first) are deleted.



这意味着:如果您的表包含值
 A B
C D
A B
C D

它包含重复值,但由于这些值不相邻, DELETE ADJACENT DUPLICATES无论您指定什么,都不会删除它们。
SELECT另一方面,除非您告诉 ORDER BY,否则返回所选数据集时的语句不能保证特定顺序。一列或多列。行只是以任何顺序返回,如果 DELETE ADJACENT DUPLICATES声明有效,纯属巧合。它甚至可能在一个系统上工作,停止在另一个系统上工作并仅删除第三个系统上的一半重复项。所以,基本规则:

在删除重复项之前,请确保您的内部表按要检查重复项的字段排序。

为了获得更好的可扩展性,您应该使用 SORT语句而不是让数据库用 ORDER BY 对行进行排序.所以你可以使用
SORT gt_bancbsis.
DELETE ADJACENT DUPLICATES FROM gt_bancbsis.

或者,如果您只想检查某些字段,
SORT gt_bancbsis BY foo bar baz.
DELETE ADJACENT DUPLICATES FROM gt_bancbsis COMPARING foo bar baz.

关于duplicates - DELETE ADJACENT DUPLICATES 不会删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13255213/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com