使用DELETE ADJACENT DUPLICATE FORM特別注意啦

使用DELETE ADJACENT FORM itab太坑爹了,它的完整語句是

DELETE ADJACENT DUPLICATE  FROM <itab> [COMPARING <comp>].

系統從內表 <itab> 中刪除所有 鄰近重複條 目。所以在使用時就必須先排序,如果不排序後果是很嚴重的,在本博客前面有相關的案例。

小林太懶了,所以每次都只寫DELETE ADJACENT DUPLICATE  FROM <itab>,如DELETE ADJACENT DUPLICATE  FROM  itab_sf02.就好了。結果有今天的tab_sf02表裏有金額字段,也照樣想這樣刪掉重複行,可是,在如下圖的情況就出問題了

注意了,後兩行的數據是不一樣的,因爲他們金額不一樣以吧。

執行DELETE ADJACENT DUPLICATE  FROM  itab_sf02後,嗚呼,後兩行只變成了一行了!

 

解決方案:要對全部字段進行比較,如果全部字段相同則刪除,即

DELETE ADJACENT DUPLICATE  FROM  itab_sf02 COMPARING ALL FIELDS.

注意:

如果沒有 COMPARING 選項,則標準關鍵字段 的內容必須相同(默認的內表關鍵字有F、I和P型),金額型不算,所以除金額型外其他相同的都被咔嚓(刪除)了。

COLLECT語句也有類似的功能,除了金額型字段外其他的字段內容相同,則去掉相同行並把相同行的金額值累加到留下來的一行。

 

發佈了24 篇原創文章 · 獲贊 9 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章