계층쿼리에서 특정 레벨 밑으로 합계값을 표기하고 싶습니다. 0 1 1,007

by InSilence [SQL Query] [2021.09.10 10:36:30]


1.png (36,902Bytes)
2.png (36,392Bytes)

데이터는 3레벨까지만 표기하고 3레벨 미만 데이터의 child_cnt  값을 sum하여 표기해주고 싶습니다.

1번 데이터를 가지고 2번 데이터까지는 뽑았으나 3레벨 밑의 child_cnt 값을 sum을 어떻게 해야 할지

모르겠습니다. ㅠㅠ 고수분들의 답변 부탁드립니다.

SELECT *
  FROM ( 
   select  a.menu_id
         , a.kor_menu_nm as menu_nm
         , a.pgm_id
         , a.up_menu_id
         , (select kor_menu_nm
              from sstm020
             where menu_id = a.up_menu_id) as up_menu_nm
         , level as menu_level
         , a.use_yn
         , a.menu_gbn
         , a.disp_ord
         , (select count(1)
              from sstm020 sa
             where sa.up_menu_id = a.menu_id
               AND sa.menu_gbn = 'P') as child_cnt
      from (select distinct menu_id
              from sstm020 sa, sstm010 sb
             where sa.pgm_id = sb.pgm_id(+)
             start with
                    kor_menu_nm like '%'
           connect by menu_id = prior up_menu_id ) s
         , sstm020 a
         , sstm010 b
     where s.menu_id = a.menu_id
       and a.pgm_id = b.pgm_id (+)
     start with a.menu_id = 'M'
   connect by prior a.menu_id = a.up_menu_id
   order siblings by a.disp_ord
     ) aa   
     WHERE 1=1 
       AND aa.child_cnt > 0 OR aa.menu_level <= 3
     ;

 

by 마농 [2021.09.13 10:28:58]

child_cnt 값을 어떻게 표현하고 싶은 건가요?

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