본문 바로가기
DB 지식

서브쿼리 셀렉트결과가 여러개일때 ,(콤마) 로 구분해 한 컬럼에 나타낼때

by 몽일! 2024. 4. 25.

STRING_AGG () / LISTAGG () / GROUP_CONCAT() 

 

나같은 경우 상담 내역 관리에서 그룹면담 출력물을 뽑을 떄 

한개의 상담에 학생정보가 여러개여서 이용함.

mssql의 경우 

SELECT
    main_table.id,
    (
        SELECT STRING_AGG(sub_table.value, ', ')
        FROM sub_table
        WHERE sub_table.id = main_table.id
    ) AS aggregated_values
FROM
    main_table;

main_table은 메인 쿼리의 테이블이고, sub_table은 서브쿼리의 테이블입니다. 
STRING_AGG() 함수는 서브쿼리의 결과를 ','로 구분한 문자열로 합칩니다.

오라클은 LISTAGG 사용방법은 같습니다 

mysql의 경우 
SELECT
    main_table.id,
    GROUP_CONCAT(sub_table.value SEPARATOR ', ') AS aggregated_values
FROM
    main_table
JOIN
    sub_table ON main_table.id = sub_table.id
GROUP BY
    main_table.id;

GROUP_CONCAT() 함수는 서브쿼리의 결과를 ','로 구분한 문자열로 결합합니다. SEPARATOR ', ' 부분은 각 값 사이에 넣을 구분자를 지정합니다.