I Agree Line Smiley

SAP/OPEN SQL

SELECT CASE 사용하기 / SELECT 이중 CASE문

지코딩 2023. 3. 9. 14:29

안녕하세요, SAP ABAP에 NEW OPEN SQL이 도입되면서 SELECT 구문에서 CASE를 사용하여 편리하게 데이터를 처리할 수 있게 됐습니다.

 

이번 글에서는 SELECT CASE 문에 대해 리뷰하겠습니다.

 

 

먼저, 글을 이해하기 쉽게 간단한 Table을 만들었습니다.

각 팀별로 두 개의 스코어를 가지고 있으며, 각 팀마다 보너스 코드를 부여했습니다.

그럼 SELECT CASE 문을 활용하여 ITAB에 해당 데이터와 SCORE_SUM 필드를 채워보겠습니다.

 

< 예시 시나리오 >

위에서 만든 ZNSQL 테이블에서 NAME, SCORE01, SCORE02 데이터를 추출하고 SCORE_SUM 테이블 데이터를 상황에 맞게 데이터를 입력한다.

 

SCORE_SUM =   BONUS가 A이면 SCORE01 과 SCORE02를 더한 값에 곱하기 lv_ten(* 10)
                                BONUS가 B이면 100

                                BONUS가 없으면 SCORE01 + SCORE02

        

< 로직 >
< 결과 화면 >

 

SELECT에서 CASE문은 다음과 같이 쓸 수 있습니다.

 

< CASE문 구조 >                                                       

 

SELECT <필드명>, <필드명>,                                 

             CASE <CASE 조건 기준>                             

             WHEN < CASE 조건> THEN ( <입력값> )

             END AS <결과 필드명>                                 

 

<SELECT CASE 설명>

> 기본적으로 CASE문 구조는 SELCET 절에서 조회 필드 선언하는 구간에서 사용된다.

>  일반적인 CASE 문과 같이 CASE에 기준이 되는 값을 적는다.

>  그리고 WHEN에 조건이 되는 값을 적는다.

>  일반적인 CASE 문에서는 사용하지 않는 THEN 구문은 괄호() 안에 원하는 결과 값을 입력하면 된다.

> ELSE 구문도 사용할 수 있으며  ELSE에는 WHEN 과 THEN이 생략되고 결과 값만 입력하면 쓸 수 있다.

> 마지막으로 ENDCASE가 아닌 END로 끝나며 AS(알리아스)를 통해 결과값을 입력한 필드명을 입력해 준다.

> SELECT에서 CASE를 사용하면 필드 순서가 바뀔 수 있으니 적절하게 소트를 사용해 준다.

 


이중 CASE 문 

정식 명칭이 있는지 모르겠는데 제가 그냥 하다가 되길래 쓰고 있는 구문이라 편하게 이중 CASE 문이라고 칭하겠습니다.

SELECT 문에 CASE문을 사용하고 WHEN 구절에서 또 한 번 CASE를 쓸 수 있습니다.

 

이 조건에 맞게 테이블을 다시 구성해 봤습니다.

 

 

 스코어 1과 2 점수를 팀마다 통일하였고 멀티플에 따라 보너스 배율을 적용시켜 보겠습니다.

 

< 예시 시나리오 >

위에서 만든 ZNSQL 테이블에서 NAME, SCORE01, SCORE02 데이터를 추출하고 SCORE_SUM 테이블 데이터를 상황에 맞게 데이터를 입력한다.

 

SCORE_SUM =  BONUS가 A이면서 MULTIPLY이 2이면  SCORE01과 SCORE02를 더한 값에 곱하기 2
                                BONUS가 A이면서 MULTIPLY이 3이면  SCORE01과 SCORE02를 더한 값에 곱하기 3

                                BONUS가 A이면서 MULTIPLY이 2이면  SCORE01과 SCORE02를 더한 값에 곱하기 4

                                BONUS가 B이면 100 

                            

< 결과 화면 >

 

< 이중 CASE문 구조 >                                                       

 

SELECT <필드명>, <필드명>,                                                                                                                   

             CASE  <CASE 조건 기준>                                                                                                              

             WHEN < CASE 조건> THEN (  CASE < CASE_2 조건 기준 >                                               

                                                                       WHEN <CASE_2 조건> THEN ( 결과 값 ) END )           

             END AS <결과 필드명>                                                                                                                  

 

CASE문 THEN 구절 안에 CASE를 한번 더 반복해서 사용할 수 있습니다.

다만, THEN 안에서는 CASE 문이 END로 끝나며 AS(알리아스)를 사용하지 않습니다.

 


이렇게 Select 문에서 CASE를 사용하는 법에 대해 리뷰하였습니다.

OPEN SQL을 활용해 더 효율성이 높은 SQL을 구성 할 수 있습니다.

'SAP > OPEN SQL' 카테고리의 다른 글

ABAP DB Connection  (0) 2024.05.22
ABAP SELECT 계산식(더하기, 곱하기 등)  (0) 2023.03.09