300x250
728x90
# 데이터 중복제거
# 인터널테이블을 중복제거 해야하는 경우가 있을 수 있다.
방법은 내가 알기로는 2가지가 있다..!
1. DELETE ADJACENT DUPLICATES FROM 구문
2. SELECT DISTINCT 구문
# 우선 속도를 비교해보면? ( SFLIGHT Table )
1.DELETE ADJACENT DUPLICATES FROM 구문
2. SELECT DISTINCT 구문
근데 차이점은
DELETE ADJACENT DUPLICATES FROM은 중복 제거 할 필드를 설정하고 나머지 값에 대한 데이터를 가지고 있지만,
SELECT DISTINCT는 중복 제거 할 필드는 설정 할 순 있지만, 나머지 값을 다 못 가져오는 경우가 생겨버린다.
한마디로 SELECT DISTINCT는 특정 필드만 가져오기 때문에 이러한 차이점이 생겨버린다.
# SELECT에서 중복 제거 할 특정 필드와 다른 값들도 가져오는 방법을 알아보자.
# 사실 Group을 지정해줘서 합쳐지는거지만 중복 제거처럼 보인다! #
# SELECT DISTINCT 응용
# ( SFLIGHT )에서 CARRID, CONNID를 중복제거 하고 나머지 필드를 가져오는 예제가 있다고 해보자.
# GROUP BY와 MAX로 SELECT 가져오기!
여기서는 DISTINCT를 사용하지 않고 GROUP BY를 사용한다. ( 중복 제거 할 필드는 ORDER BY로 생각해보자 )
# 01. 중복제거 할 필드를 GROUP BY로 설정해보자.
# 02. 나머지 값들은 MAX로 설정해보자.( 상황에 따라서 [ MAX, MIN, AVG, SUM, COUNT ]를 사용하면 된다. )
DATA:
GT_LIST TYPE TABLE OF SFLIGHT.
SELECT
CARRID
CONNID
MAX( FLDATE ) AS FLDATE
MAX( PRICE ) AS PRICE
MAX( CURRENCY ) AS CURRENCY
MAX( PLANETYPE ) AS PLANETYPE
MAX( SEATSMAX ) AS SEATSMAX
MAX( SEATSOCC ) AS SEATSOCC
MAX( PAYMENTSUM ) AS PAYMENTSUM
MAX( SEATSMAX_B ) AS SEATSMAX_B
MAX( SEATSOCC_B ) AS SEATSOCC_B
MAX( SEATSMAX_F ) AS SEATSMAX_F
MAX( SEATSOCC_F ) AS SEATSOCC_F
FROM SFLIGHT
INTO CORRESPONDING FIELDS OF TABLE GT_LIST
GROUP BY
CARRID CONNID.
# 03. 실행을 해보면? 다음과 같이 CARRID, CONNID 중복 제거하고 나머지 값들은 가져오게 된다.
끝!
728x90
'.ABAP > ..모든 것' 카테고리의 다른 글
SAP Query [3] - 필드 추가 (2) | 2024.04.19 |
---|---|
SAP Clear SAP/ABAP Memory 정리 (0) | 2024.04.17 |
SAP LOOP AT 정리( FIRST, NEW, END, LAST ) , 예제 (1) | 2024.04.11 |
SAP Unicode 문자열 길이 정리 (0) | 2024.03.20 |
SAP Maintenance View ( + ) 해결 방법 (0) | 2024.03.15 |