DB 버전은 Oracle 18C 구요,
반 | 번호 | 이름 | 비고 |
A | 1 | 김나래 | [{ .. }] |
A | 2 | 이순득 | [{ .. }] |
B | 1 | 김명숙 | [{ .. }] |
B | 3 | 김수리 | [{ .. }] |
C | 1 | 차요기 | [{ .. }] |
(비고는 현재 없는 상태입니다.)
이런 상태에서, 비고 부분을 작성하고 싶습니다.
각 학생별로 같은 반에 들어간 학생의 명단을 전부 비고에 받아오려 합니다.
예를 들어 이름 김나래의 경우는, [{ num: "1", name: "김나래" }, { num: "2" , name: "이순득" }]
이렇게 가져오려 하는데 json으로 어떻게 가져올수 있을지 질문드립니다.
WITH t AS ( SELECT 'A' class, '1' num, '김나래' name FROM dual UNION ALL SELECT 'A', '2', '이순득' FROM dual UNION ALL SELECT 'B', '1', '김명숙' FROM dual UNION ALL SELECT 'B', '3', '김수리' FROM dual UNION ALL SELECT 'C', '1', '차요기' FROM dual ) SELECT a.class , a.num , a.name , b.bigo FROM t a , (SELECT class , '[' || LISTAGG('{ num: "' || num || '", name: "' || name || '" }' , ', ') WITHIN GROUP(ORDER BY num) || ']' bigo FROM t GROUP BY class ) b WHERE a.class = b.class ;