메뉴구조를 만드는데..
데이터는 잘가져왔다.
그런데 이걸 맵으로 하려고 하다보니까.
닫아줄때.. 골치가. 아파서 json으로 일단 뽑아 보았다.
with vw00 as (
select
a.menu_nm,
a.menu_cd,
a.menu_kind,
a.fst_ord,
(
select JSON_agg(json_build_object(
'menu_nm',menu_nm,
'menu_cd',menu_cd,
'menu_kind',menu_kind,
'fst_ord',fst_ord,
'pgm_id',pgm_id
) order by b.sed_ord)
from tb_cm_menu b
where b.prnt_menu_cd=a.menu_cd
) t
from tb_cm_menu a
where
a.prnt_menu_cd =''
order by a.fst_ord
)
,vw01 as (
select JSON_agg(json_build_object(
'menu_nm',menu_nm,
'menu_cd',menu_cd,
'menu_kind',menu_kind,
'child',t
) order by fst_ord
) t from vw00
)
select jsonb_pretty(t::jsonb) from vw01
출력결과
[
{
"child": [
{
"pgm_id": "KIW_0100",
"menu_cd": "MN_KIW_0100",
"menu_nm": "주문(접수,체결)",
"sed_ord": "2",
"menu_kind": "S"
},
{
"pgm_id": "KIW_0200",
"menu_cd": "MN_KIW_0200",
"menu_nm": "잔고(체결)",
"sed_ord": "3",
"menu_kind": "S"
},
{
"pgm_id": "KIW_0300",
"menu_cd": "MN_KIW_0300",
"menu_nm": "실시간체결",
"sed_ord": "4",
"menu_kind": "S"
}
],
"fst_ord": "1",
"menu_cd": "MN_KIW_0000",
"menu_nm": "키움실시간",
"menu_kind": "M"
},
{
"child": [
{
"pgm_id": "KIW_1100",
"menu_cd": "MN_KIW_1100",
"menu_nm": "주식기본요청",
"sed_ord": "2",
"menu_kind": "S"
},
{
"pgm_id": "KIW_1200",
"menu_cd": "MN_KIW_1200",
"menu_nm": "계좌수익률요청",
"sed_ord": "3",
"menu_kind": "S"
},
{
"pgm_id": "KIW_1300",
"menu_cd": "MN_KIW_1300",
"menu_nm": "관심종목정보요청",
"sed_ord": "4",
"menu_kind": "S"
}
],
"fst_ord": "2",
"menu_cd": "MN_KIW_1000",
"menu_nm": "키움조회",
"menu_kind": "M"
},
{
"child": [
{
"pgm_id": "CM_0100",
"menu_cd": "MN_CM_0100",
"menu_nm": "프로그램관리",
"sed_ord": "2",
"menu_kind": "S"
},
{
"pgm_id": "CM_0200",
"menu_cd": "MN_CM_0200",
"menu_nm": "테이블도메인",
"sed_ord": "3",
"menu_kind": "S"
},
{
"pgm_id": "CM_0300",
"menu_cd": "MN_CM_0300",
"menu_nm": "메뉴관리",
"sed_ord": "4",
"menu_kind": "S"
}
],
"fst_ord": "3",
"menu_cd": "MN_CM_0000",
"menu_nm": "기준정보",
"menu_kind": "M"
}
]