SSISO Community

시소당

connect by를 통한 계층관계의 처리

트리  구조를  나타낼  때는  주로  Connect  By구문을  이용한다.  인라인뷰를  함께  사용하여  성능의  효과를  본다.

계정정보:  계정번호,  계정명,  상위계정번호(fk)
계정금액:  계정번호,  지점번호,  회계일자,  계정금액

select  a.계정번호,  sum(b.계정금액)
from  계정정보  a,  계정금액  b
where  b.계정번호  in  (select  d.계정번호  from  계정정보  d
    start  with  d.계정번호  =  a.계정번호
              connect  by  prior  d.계정번호  =  d.상위계정번호)
and  b.회계일자  =  ‘961010’
group  by  a.계정번호;

<개선안>
select  a.계정번호,  sum(b.계정금액)
from  계정정보  a,
          (select  계정번호,  sum(계정금액)  as  계정금액  
            from    계정금액  
            where  회계일자  like  ‘199610%’
            group  by  계정번호  )  b
where  b.계정번호  in  (select  d.계정번호  from  계정정보  d
                                                                  start  with  d.계정번호  =  a.계정번호
        connect  by  prior  d.계정번호  =  d.상위계정번호)
group  by  a.계정번호;

1092 view

4.0 stars