JsonObject로 결과값을 받아오는 방법이 있을까요? 0 4 1,159

by SQL모험가 [Oracle 기초] [2022.10.04 14:23:06]


DB 버전은 Oracle 18C 구요,

번호 이름 비고
A 1 김나래 [{ .. }]
A 2 이순득 [{ .. }]
B 1 김명숙 [{ .. }]
B 3 김수리 [{ .. }]
C 1 차요기 [{ .. }]

(비고는 현재 없는 상태입니다.)

이런 상태에서,  비고 부분을 작성하고 싶습니다.

각 학생별로 같은 반에 들어간 학생의 명단을 전부 비고에 받아오려 합니다.

예를 들어 이름 김나래의 경우는, [{ num: "1", name: "김나래"  }, { num: "2" , name: "이순득" }]

이렇게 가져오려 하는데 json으로 어떻게 가져올수 있을지 질문드립니다.

by 마농 [2022.10.04 16:18:28]
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
;

 


by SQL모험가 [2022.10.06 12:29:37]

감사합니다 LISTAGG란 것도 있군요 덕분에 하나 배워갑니다.



by SQL모험가 [2022.10.06 12:30:21]

답변 감사합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입