Notice
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- #apostrophe
- abap #sap #hotspotclick #do_sum
- abap #sap #conversion #currency #conversion_currency
- sap #abap #data exists #read table #xsdbool #line exists
- abap #sap #layout #layout 설정
- abap #동적 where #동적 select
- abap #sap #sy-index #sy-tabix #syst
- abap #initial #null #abap inital vs null
- abap #sap #conversion #currency #cfield #waers
- abap move corresponding #abap data이동 #abap correspond mapping
- open sql #sap #abap #where exists #where not exists
- abap #wildcard #와일드카드 #sql #select #where조건
- abap #정규표현식 #regular expression
- sap #abap #cl_gui_alv_grid #function code #alv
- abap #sap #free #alv #clear #refresh
- abap #se39 #srepo #sap #development #compare code
- abap #sap #sy-datlo #sy-datum #syst #system variable # 시스템변수
- abap #sap #color #row #layout
- sap #abap #화폐단위 #sap conversion #inr conversion
- abap #sap #search hlep #f4 #f4if_int_table_value_request #change column name
- grave #abap #sap #backquote
- sap #cts #abap #release #merge cts #request no
- abap #sap #se16h #data #tcode
- abap #abap_move
- abap #sql #sap #query 실행 순서 #query 작성 순서
Archives
- Today
- Total
0v0__DEV
[11] ABAP OPEN SQL - WHERE EXISTS, WHERE NOT EXISTS 본문
728x90
개발 중 exists와 not exists 를 사용했는데, 예상과 다르게 데이터가 출력되어
두 구문에 대해 작성해본다!

1. WHERE NOT EXSITS
SELECT *
FROM scarr
WHERE CARRID IN ( 'AA', 'AB', 'AC', 'AD' )
INTO TABLE @DATA(lt_itab).
SELECT a~*
FROM scarr AS a INNER JOIN @lt_itab AS b ON a~CARRID = b~CARRID
WHERE NOT EXISTS ( SELECT *
FROM scarr
WHERE CARRID EQ 'CO' )
INTO TABLE @DATA(lt_scarr).
SCARR에서 CARRID 가 'AA', 'AB', 'AC', 'AD인 것을 출력했다
예상 결과 : CARRID 가 AA, AB, AC, AD인 것 중에서 (sub query) Carrid 가 CO가 아닌 것을 출력!
=> AA, AB, AC, AD가 나오겠지?
실제 결과 : 아무것도 안나옴...
이유?
WHERE NOT EXISTS 의 의미!
- WHERE NOT EXISTS 쿼리의 반환값이 존재한다면 ? FALSE( select X), 존재하지 않으면 TRUE (select)
=> 서브쿼리의 반환값이 존재하냐 존재하지 않냐로 TRUE / FALSE 결과가 나오고, 그에 따라 셀렉트 하냐 마냐가 결정됨
NOT IN 의 의미가 아니다 ㅎㅎㅎ
테스트: CARRID = 'KKK' (존재하지 않는 값)으로 테스트
SELECT a~*
FROM scarr AS a INNER JOIN @lt_itab AS b ON a~CARRID = b~CARRID
WHERE NOT EXISTS ( SELECT *
FROM scarr
WHERE CARRID EQ 'KKK' )
INTO TABLE @DATA(lt_scarr).
결과 : 서브쿼리의 결과가 존재하지 않기 때문에 TRUE => Select 한다!
2. WHERE EXISTS
- WHERE NOT EXISTS와 반대로,
쿼리의 반환값이 존재한다면 ? TRUE( select ), 존재하지 않으면 FALSE (select X )
SELECT a~*
FROM scarr AS a INNER JOIN @lt_itab AS b ON a~CARRID = b~CARRID
WHERE EXISTS ( SELECT *
FROM scarr
WHERE CARRID EQ 'KKK' )
INTO TABLE @DATA(lt_scarr).
KKK인 CARRID가 존재하지 않음 => FALSE => SELECT X
결과 :
728x90
'SAP BASIC' 카테고리의 다른 글
[13] ABAP SQL Select - 여러 변수에 값 동시에 담기~ (0) | 2024.08.30 |
---|---|
[12]SAP(abap) - ALV Layout (0) | 2024.08.26 |
[10] ABAP LINE_EXISTS (0) | 2024.08.22 |
[09] ABAP SQL - 동일 필드에 대해 Where 조건 두 번 주기! (0) | 2024.08.21 |
[08] T-Code : SE16H (0) | 2024.08.19 |