300x250
728x90
Self Join이란
# 말 그대로 자신의 테이블에 JOIN을 건다는 뜻.
# 원래 JOIN을 하게 되면 2 개의 테이블 이상 Join을 걸어서 하는 경우가 대다수 일 것이다.
하지만 2 개 테이블이 아닌 1개 테이블에서 Join이 필요한 경우가 있다. 그때 필요한 것이 Self Join이다.
Self Join 필요한 이유
다음과 같은 테이블이 있다고 해보자.
# 우리가 해야 할 것은 FPPER 데이터와 INPER 데이터가 같은 값만 가져오는 로직을 만들어야 한다.
만약 가져오게 되면 이런 식으로 가져와야 한다.
여기서 한번 어떤 식으로 짜야할지 생각해 보고 넘어가 보자.
만드는 방법 중에는 여러 가지가 있지만 알고 있는 로직은
# LOOP문을 통해 조건문으로 값은 값이면 가져오고 아니면 정제해 주는 로직
# Alias을 통해 하는 방법도 있음( 맨 밑 )
(다른 방법 있으면 댓글 부탁드립니다!)
하지만 굳이 LOOP문 사용 안 하고 SQL에서 처리를 할 수 있다.
이럴 때 필요한 것이 Self Join인 것이다.
# SQL에서 조건문을 통해서 FPPER 하고 INPER 하고 비교를 해서 같으면? 가져오고, 다르면? 안 가져온다.라는 조건을 만들어주면 되는 것이다.
( SELECT 테이블 비교 )
자 이제 시작해 보자.
SELECT Self Join 시작하기
# 우선 시작하기 전 기준이 필요하다.
( 당연하겠지만... )
Join 할 때 조건은
# KEY 값
# 비교할 값
이렇게 정하고 넘어가자.
#1. 다시 테이블 데이터를 봐보자.
#2. 기본적인 SELECT 선언 ( START-OF-SELECTION )
#3. Self Join 추가( 테이블 비교 )
# 다음과 같이 Self Join을 사용할 수 있다.
(로직 설명은 생략)
위에서 말했듯이
Key 값과 비교할 값 조건을 달아서 자신의 테이블을 비교함으로 써
이런 식으로 가져오고 싶은 값만 가져올 수가 있다.
SELECT X~SEQNR,
X~FPPER,
X~INPER
FROM ZTHRPY_GJ AS X
INNER JOIN ZTHRPY_GJ AS Y " Self Join "
ON X~SEQNR EQ Y~SEQNR " Key 값 "
AND X~FPPER EQ Y~INPER " 비교할 값 "
INTO CORRESPONDING FIELDS OF TABLE @GT_LIST01
ORDER BY X~SEQNR.
(2023-11-01 수정)
# Self Join을 통해서 할 수 있는 방법도 있지만 Alias을 통해서 하는 방법도 있다
다음과 같이 ON 조건에 쓰는 것이 아닌 Where 조건에 사용하는 방법도 있다는 점 참고 바란다.
SELECT X~SEQNR,
X~FPPER,
X~INPER
FROM ZTHRPY_GJ AS X
INTO CORRESPONDING FIELDS OF TABLE @GT_LIST01
WHERE X~SEQNR EQ X~SEQNR AND
X~FPPER EQ X~INPER
ORDER BY X~SEQNR.
끝.
728x90
'.ABAP > ..모든 것' 카테고리의 다른 글
SAP Table Control 정리 ( 라인선택, 더블클릭 ) (1) | 2023.11.16 |
---|---|
SAP GUI 한글(폰트) 깨짐 (2) | 2023.11.02 |
SAP Lock Object 정리 (2) | 2023.10.27 |
SAP Web Dynpro( 웹딘 프로 ) Host 등록 방법 (1) | 2023.10.16 |
SAP 텍스트 색상 변경( INTENSIFIED ) (0) | 2023.10.11 |