본문 바로가기

ABAP 프로그래밍 개념/OPEN SQL

COALESCE Function

Coalesce 함수를 SQL 표현식 또는 Open SQL에서 표현식의 피연산자로 호출합니다. Coalesce 함수는 쉼표로 구분된 목록으로 최소 2개 이상 255개 이하의 인수 arg1, arg1, ..., argn을 가질 수 있습니다. 이 함수는 null 값이 없는 첫 번째 인수의 값을 반환합니다. 모든 인자에 널 값이 있으면 마지막 인자 argn의 값이 반환됩니다. 여는 괄호 뒤와 닫는 괄호 앞에 공백을 넣어야 합니다.

가능한 인수(Argument)는 여러 가지가 있습니다:

■ ACCP, DF16_SCL(더 이상 사용되지 않음), DF34_SCL(더 이상 사용되지 않음), LCHR, LRAW, PREC, RAWSTRING 및 STRING을 제외한 모든 사전 유형을 가진 열 및 기타 표현식.
■ 문자열 및 xstring을 제외한 ABAP 유형의 리터럴, 호스트 변수 및 호스트 표현식.

인수의 데이터 유형이 동일하거나 한 인수의 데이터 유형이 다른 데이터 유형의 값을 나타내야 합니다. 결과는 값 범위가 가장 큰 인수의 사전 유형을 갖습니다.

Syntax

... COALESCE( arg1, arg2, ..., argn ) ...

■Coalesce Function는 널 값을 읽을 때 대상 객체에 자체 정의된 값 또는 표현식의 결과를 할당하는 데 사용할 수 있습니다. 기본적으로 Data Type에 따른 초기 값이 할당됩니다.
■ 최대 10개의 결합 함수를 중첩할 수 있습니다.
■ Coalesce Function는 다음과 같은 복잡한 Complex Case문 을 줄인 것입니다.

  CASE WHEN arg1 IS NOT NULL THEN arg1
       WHEN arg2 IS NOT NULL THEN arg2
       ...
       ELSE argn
  END

SAP Example 1.

처음 세 개의 CASE 표현식은 WHEN 조건이 충족되지 않고 ELSE가 지정되지 않았기 때문에 null 값을 반환합니다. 네 번째 CASE 표현식의 결과는 null 값이 아니며 COALESCE에 의해 반환됩니다.

DELETE FROM demo_expressions.
INSERT demo_expressions FROM @( VALUE #( id = 'X' ) ).

SELECT SINGLE
       FROM demo_expressions
       FIELDS COALESCE( CASE id WHEN 'A' THEN 'a' END,
                        CASE id WHEN 'B' THEN 'b' END,
                        CASE id WHEN 'B' THEN 'b' END,
                        CASE id WHEN 'X' THEN 'x' END  ) AS coalesced
       INTO @DATA(result).

 

 

SAP Example 2.


DEMO_JOIN1, DEMO_JOIN2 테이블을 LEFT OUTER JOIN을 진행하여, Null 값인 경우에는 Null이라는 메시지를 띄우도록 수정

SELECT
  T1~A AS T1_A,
  T1~B AS T1_B,
  T1~C AS T1_C,
  T1~D AS T1_D,
  T2~D AS T2_D,
  T2~E AS T2_E,
  T2~F AS T2_F,
  T2~G AS T2_G,
  T2~H AS T2_H,
  COALESCE( T2~D, 'Null' ) AS T2_D_COAL,
  COALESCE( T2~E, 'Null' ) AS T2_E_COAL,
  COALESCE( T2~F, 'Null' ) AS T2_F_COAL,
  COALESCE( T2~G, 'Null' ) AS T2_G_COAL,
  COALESCE( T2~H, 'Null' ) AS T2_H_COAL
  FROM DEMO_JOIN1 AS T1
       LEFT OUTER JOIN DEMO_JOIN2 AS T2 ON T1~D EQ T2~D
  INTO TABLE @DATA(RESULT).

 

반응형

'ABAP 프로그래밍 개념 > OPEN SQL' 카테고리의 다른 글

CASE Function 2 : Complex Case  (0) 2023.09.03
CASE Function 1 : Simple Case  (0) 2023.09.03
String Function  (0) 2023.08.09
Numeric Function  (0) 2023.08.05
OPEN SQL의 사용  (0) 2023.08.05