두개의 테이블에서 계층별 쿼리의 sum.. 0 3 6,716

by 이정수 START WITH CONNECT BY [2009.12.01 18:57:29]


계층별 합계를 구해야 되는데.. 테이블을 두개를 조인해서구해야 할꺼 같습니다..

테이블 구조를 설명을 드리자면..aaa 라는 계정정보가 들어있는 테이블이 있습니다..

aaa 라는 테이블에 accd, upcd, levl(간단한 필요한 컬럼만 기술할께요..) 라는 계정코드와 상위계정코드, 계정레벨의 컬럼이 있습니다. 계정코드는 10자리구요..
예를 들면 1000000000, 1000000001..  이런식으로 데이터가 있다고 가정하구요, 상1000000001 의 상위 계정코드는 1000000000 이게 될테구요..계정레벨은 1~5까지 있습니다.

그리고 bbb라는 테이블에는 계정코드와 금액 정보가 존재하죠, accd, damt 라는 컬럼이 있죠.. accd는 aaa테이블의 accd 와 같은 계정코드 정보가 있습니다.

합계를 구해야 되는 컬럼은 bbb 테이블의 damt 라는 금액의 합계를 구해야됩니다..;

참고로 무조건 1, 2, 3, 4, 5레벨의 순차가 아닌 경우도 있습니다.. 예를 들어 3레벨의 하위 레벨이 바로 5레벨로되는

경우도 있습니다..

이런 테이블의 구조일 경우 계층별 합계를 어떻게 구해야 할지..;; 도움좀 부탁 드립니다..;;

테이블 구조를 잘 설명 한건지.. 흠..;;

soqool에서 start with connect by의 해결방법은 찾았지만 단일 테이블일경우더군요..

SELECT NAME
     , AMT
     , (SELECT     SUM (AMT)
              FROM TEMP
        START WITH MENU_ID = A.MENU_ID
        CONNECT BY PRIOR MENU_ID = P_MENU_ID
) AMT_CHILD
  FROM TEMP A

이런식의 구조는 단일 테이블일 경우는 가능하지만.. 두개의 테이블일경우는 어떻게 조인을 해서

해결을 해야 할지 도저히 감이 안 잡히는군요.. 일주일때 머리 싸메고 있는데.. 답이 안나오네요..-_-;;

 

by 마농 [2009.12.02 08:19:53]
위 빨간 서브쿼리 안에서 두 테이블 조인하시면 됩니다.

by finecomp [2009.12.02 15:12:30]
빨간 부분만...;
SELECT SUM (bbb.AMT)
FROM aaa, bbb
START WITH aaa.MENU_ID = A.MENU_ID
CONNECT BY PRIOR aaa.MENU_ID = aaa.P_MENU_ID
WHERE aaa.MENU_ID = bbb.MENU_ID

뭐 이런 조인형태가 되지 않을까 싶습니다...테스트는 안 했습니다...;

by 이정수 [2009.12.04 15:47:34]
감사합니다~ 안에서의 조인 방법을 잘 못했는지 몰라도..쉽게 되지 않더군요..ㅎㅎ 여튼 감사합니다..ㅎㅎ
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입