본문 바로가기

카테고리 없음

postgresql select ==> json 변경

메뉴구조를 만드는데..

데이터는 잘가져왔다.

그런데 이걸 맵으로 하려고 하다보니까. 
닫아줄때.. 골치가. 아파서 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"
    }
]