DB

[ORACLE]LISTAGG 함수, ONE TO MANY, SINGLE ROW로 보여주기

까오기 2020. 4. 3. 14:29

오라클을 사용하고 ONE TO MANY 관계인 테이블들을 조인해서 하나의 ROW로 보여 줄 때 편리한 함수입니다. 

 

Syntax

LISTAGG(<expression>, <seperator>) WITHIN GROUP(ORDER BY ...)

 

Example 

select 
    s.student_id
    , s.student_nm
    , LISTAGG(b.subject, ',') WITHIN GROUP (ORDER BY b.subject) subjects 
from student s 
    join subject b on s.student_id = b.student_id
where student_id = '1234'
group by s.student_id, s.student_nm
order by s.student_id 

one-to-many 관계인데 하나의 row로 뽑아 달라는 요청이 많은데 그럴 때 유용하게 쓸 수 있습니다.