쿼리 질문 드립니다. 0 1 478

by 이경준 [2014.11.17 15:55:11]


안녕하세요.

아래와 같은 문제에 직면했는데 어떻게 해야될지 감이 안와 문의드립니다.

a_tab 의 자신의번호 기준으로 b_tab의 번호를 시작번호와 끝번호로 조회하여 있으면 a_tab의 자신의번호 밑에 나열하는 것입니다.

 

a_tab
자신의번호 시작번호 끝번호 내용
99        100        110   abc
140        150        152    bcd

b_tab

번호  내용

101   aaa
107   bbb
130   ccc
140   ddd
151   eee
152   fff


결과

번호 내용 
99 abc
101 aaa
107 bbb
140 bcd
151 eee
152 fff

사용 DB는 오라클 11입니다.

어떻게 하면 될까요? 미리 감사드립니다.

by DarkBee [2014.11.17 17:08:48]
SELECT *
  FROM (
          SELECT ROW_NUMBER () OVER ( PARTITION BY 자신의번호 ORDER BY num ) rn
               , a.*
            FROM (
                    SELECT 1 num, 자신의번호, 내용
                      FROM a_tab
                     UNION ALL
                    SELECT 2 num, 번호, 내용
                      FROM b_tab
                     WHERE EXISTS ( SELECT 'x' 
                                      FROM a_tab 
                                     WHERE 번호 BETWEEN 시작번호 AND 끝번호 
                                  )
          ) a
) WHERE rn = 1

 

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