ABAP 코딩 (6) Aggregation function, select single

빵섭·2024년 8월 11일
0

💻 SYNC-ABAP 코딩

목록 보기
6/9
post-thumbnail

🌞 Aggregation function

SQL 문에서 사용하는 집계함수로 MIN MAX SUM AVG COUNT 가 있다.


💡 SFLIGHT 테이블의 레코드 개수, PRICE 필드의 총합, 최소, 최대값을 구하는 코드

DATA : BEGIN OF gs_function,
         cnt TYPE i,
         max TYPE sflight-price,
         min TYPE sflight-price,
         sum TYPE sflight-price,
         avg TYPE f,
       END OF gs_function,

       gv_sum   TYPE sflight-price,
       gv_min   TYPE sflight-price,
       gv_max   TYPE sflight-price,
       gt_scarr TYPE TABLE OF scarr,
       gs_spfli TYPE spfli.


SELECT COUNT( * ) SUM( price ) MIN( price ) MAX( price )
  INTO ( gs_function-cnt, gv_sum, gv_min, gv_max )
  FROM sflight.

⭐ 집계함수를 이용한 뒤 sy-subrc 를 통해 검증이 불가능하다.
  해당하는 SELECT 문에서 데이터가 없더라도 One-line result 를 뱉어낸다.
⭐ 검증을 위해서 IF gs_funtion-cnt > 0 count의 값이 0이상인지를 확인한다.

🌞 Single Select [ 1개의 라인을 조회는 방법 ]

💡 잘못된 코드

SELECT carrid connid airpfrom airpto 
  INTO CORRESPONDING FIELDS OF gs_spfli
  FROM spfli
 WHERE carrid = 'LH'.

⭐ 일반적인 SELECT 문을 사용하면 FROM절에 해당하는 레코드를 모두 가져오기 때문에 오류발생.


💡 올바른 코드

SELECT SINGLE carrid connid airpfrom airpto 
  INTO CORRESPONDING FIELDS OF gs_spfli
  FROM spfli
 WHERE carrid = 'LH'.

SELECT SINGLE 문을 사용하여 한개의 레코드를 가져온다.
PK로 걸려있는 필드 에 조건을 주면 더 정확한 레코드를 가져올 수 있다.

profile
ABAP / SAP

0개의 댓글