계층형쿼리에서 막히네요... 하위전체건수 문의드립니다. 1 2 3,706

by 종이남자 [SQL Query] connect by 계층 [2014.01.09 20:55:15]


안녕하세요. 계층형쿼리 작성에 질문이 있습니다...

지역DB
기준월 | 지역코드 | 상위지역코드 | 지역레벨코드

사람DB
기준월 | 지역코드 | 사람코드

위와같은 DB가 2개 있는데...


입력 = 기준월FROM~TO, 지역레벨코드(도,시,동)
결과
기준월 | 지역코드 | 하위사람수전체

이런 결과를 얻고 싶습니다.

예를들어 '1~2월', '도' 를 입력하면

1월 | 충청북도 | 11000
1월 | 전라남도 | 13000
...
...
2월 | 충청북도 | 110001
...
...

'1월', '시' 를 입력하면(충북에는 충주와 제천밖에 없고 전남에는 목포와 여수밖에 없다고 가정하면)
1월 | 충주시 | 5000
1월 | 제천시 | 5000
1월 | 목포시 | 6000
1월 | 여수시 | 6000
...
...


위의 결과를 보시면 아시겠지만... 충북에 살면서 충주시, 제천시 모두 소속되지 않은 사람이 존재할수도 있습니다.
그사람의 사람DB 는
기준월 | 충청북도 | 사람코드
이렇게 들어가 있겠지요..

요지는
1.사람이 항상 최하위 노드에 포함되지는 않는다.
2.지역레벨을 선택하면 그 지역레벨에 속하는 지역별로 하위전체 사람수를 보여줘야한다.
입니다.

어렵네요.. 도와주세요..
by 마농 [2014.01.10 08:36:31]
SELECT 기준월
     , 지역코드
     , (SELECT COUNT(*)
          FROM 지역DB b
             , 사람DB c
         WHERE b.기준월   = c.기준월
           AND b.지역코드 = c.지역코드
         START WITH b.기준월   = a.기준월
                AND b.지역코드 = a.지역코드
         CONNECT BY PRIOR b.지역코드 = b.상위지역코드
        ) 하위사람수전체
  FROM 지역DB a
 WHERE 기준월 BETWEEN :v_from_ym AND :v_to_ym
   AND 지역레벨코드 = :v_level_cd
;

by 종이남자 [2014.01.11 13:55:20]
감사합니다~~~ 덕분에 많은 도움이 됐습니다~!!
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입