반응형
AGGR_CONCAT 함수
AGGR_CONCAT는 그룹 내의 모든 로우에 대해 문자열과 구분자를 접합하여 하나의 문자열로 만들어 반환하는 함수이다. NULL 값을 반환하는 파라미터는 결과로부터 제외된다. AGGR_CONCAT의 세부 내용은 다음과 같다.
사용 예시
SELECT MENU_ID
, MENU_NM
, MENU_CTG_CD
, MENU_DEPTH
, MENU_ODRG
, ODRG
, CNCT_BUTT_NO
, CNCT_MENU_ID
, BEF_MENU_ID
, (CASE WHEN MENU_SBST IS NULL OR MENU_SBST = '' THEN 'N' ELSE 'Y' END) AS MENU_SBST
FROM SCENA_MENU_MGT M JOIN
( SELECT LOW_MENU_ID
, AGGR_CONCAT(M.MENU_ODRG , '.' ORDER BY M.MENU_DEPTH ASC) AS ODRG
FROM LOW_MENU_MGT MT JOIN
SCENA_MENU_MGT M
ON M.MENU_ID = MT.MENU_ID
WHERE LOW_MENU_ID IN (SELECT MENU_ID
FROM SCENA_MENU_MGT
WHERE SCENA_ID = #{scenaId})
GROUP BY LOW_MENU_ID
) L ON L.LOW_MENU_ID = M.MENU_ID
WHERE SCENA_ID = #{scenaId}
ORDER BY (CASE WHEN LENGTH(SUBSTR(ODRG, INSTR(ODRG, '.', -1) + 1)) > 1
THEN SUBSTR(ODRG, 0, INSTR(ODRG, '.', -1)) || LPAD('', LENGTH(SUBSTR(ODRG, INSTR(ODRG, '.', -1) + 1)) -1, '9') || SUBSTR(ODRG, INSTR(ODRG, '.', -1) + 1)
ELSE ODRG
END)
오라클의 경우에는 LISTAGG 집계함수를 사용하면 되는데, 설명은 아래 블로그를 참고하면 된다.
[ORACLE] LISTAGG 집계함수 (여러 행을 하나의 값으로 합치기)
오라클에서 여러 행의 컬럼 값을 하나로 합쳐주는 기능을 지원하는 함수는 버전별로 상이하다. XMLAGG : 오라클 9i 이하 WM_CONCAT : 오라클 10g ~ 11g R1 LISTAGG : 오라클 11g R2 ~ ( DISTINCT 를 사용한 중복제
sloth91.tistory.com
반응형
'Develops > SQL' 카테고리의 다른 글
[MySQL] 위도, 경도로 거리를 계산하기(하버사인 공식, SIN, COS, ACOS, RADIANS) (0) | 2024.07.21 |
---|---|
[PostgreSQL] GENERATE_SERIES 사용 예시 (범위 안의 일련의 값 생성) (0) | 2024.07.21 |
[Mybatis] Mybatis 파라미터 ${}(Literal)과 #{}(bind)의 차이점 (0) | 2024.03.30 |
[ORACLE] RANK, DENSE_RANK, ROW_NUMBER 함수 (중복여부, 생략여부) (0) | 2024.03.30 |
[ORACLE] PIVOT, UNPIVOT 함수 (행을 열로, 열을 행으로 변환) (0) | 2024.03.26 |