본문 바로가기

DBMS

[ORACLE] 계층형 쿼리에서 계층별 누적 합계 구하기 (두 테이블의 JOIN이 필요할 때)

단일 테이블인 경우에는 아래와 같이 서브쿼리를 사용하여 누적합계를 구할 수 있다.

 

SELECT        CODE,
             UPPER_CODE,
             CNT,
             (SELECT SUM(CNT) 
             FROM TABLE1 I 
              START WITH I.CODE = T.CODE 
              CONNECT BY PRIOR CODE = UPPER_CODE)SUM
FROM          TABLE1 T
START WITH    UPPER_CODE = 'ROOT'
CONNECT BY    PRIOR CODE = UPPER_CODE

 

하지만 나의 경우 계층 구조로 되어 있는 카테고리 테이블과 각 카테고리별 데이터가 저장되는 테이블이 따로 존재해서 다른 방법을 찾아야 했다. 

 

 

구글링하여 찾은 결과..

WITH 절을 사용하여 임시테이블로 만들면 가능했다.

 

WITH GROUPED (CODE, UPPER_CODE, CNT)
AS  
(
SELECT CODE,
       UPPER_CODE,
       (SELECT COUNT(CODE) FROM TABLE2 I WHERE CODE = T.CODE)
FROM   TABLE1 T
)
     
SELECT CODE,
       UPPER_CODE,
       CNT,
       (
        SELECT SUM(CNT) FROM GROUPED I 
        START WITH I.CODE = G.CODE 
        CONNECT BY PRIOR CODE = UPPER_CODE
       )SUM
FROM   GROUPED G
START WITH UPPER_CODE = 'ROOT'
CONNECT BY PRIOR CODE = UPPER_CODE

 

 

 

출처

https://stackoverflow.com/questions/76105061/how-to-get-cumulative-sum-of-values-in-each-level-of-oracle-hierarchical-query

 

How to get cumulative sum of values in each level of Oracle hierarchical query?

This question is in continuation to my previous question on hierarchical query, where Im looking for cumulative sum of values at each level of the hierarchy. For a schema like the following: drop t...

stackoverflow.com