오라클 ROWNUM JOIN 질문있습니다. 0 2 412

by hclee [SQL Query] [2020.04.21 12:17:08]


TEST1 TABLE 에는 ACCOUNT_NO, COMP_NO column이 있습니다.

TEST2 TABLE 에는 COMP_NO, COMP_NA column이 있습니다.

TEST1 ACCOUNT_NO  column에는  

INSERT INTO TEST1
(ACCOUNT_NO)
SELECT LEVEL FROM DUAL CONNECT BY LEVEL <= 100000; 형식으로 만들었고

UPDATE TEST1
SET ACCOUNT_NO = LPAD(ACCOUNT_NO,10,0) LPAD형식으로 업데이트를 해줬습니다.

TEST1 COMP_NO colum 에는 NULL값입니다.

TEST2 TABLE COMP_NO, COMP_NA column 에는

INSERT INTO TEST2 
(COMP_NO,COMP_NA)  
SELECT LPAD(LEVEL,5,0),'회원사'||LEVEL   
FROM DUAL 
CONNECT BY LEVEL <=50000; 형식으로 만들었습니다.

TEST1 TEABLE 을 SELECT 한 쿼리입니다.

ROW_NUMBER() OVER (ORDER BY ACCOUNT_NO DESC) AS NUM, 
ACCOUNT_NO , COMP_NO
FROM TEST1
ORDER BY NUM DESC;

 

TEST2 TABLE 을 SELECT 한 쿼리입니다.

SELECT 
ROW_NUMBER() OVER (ORDER BY COMP_NO) AS NUM,
COMP_NO,COMP_NA
FROM TEST2;

2개의 TABLE 의 ROWNUM으로 JOIN을 해서 column순서를  COMP_NO , COMP_NA, ACCOUNT_NO 순으로 출력하고싶습니다. 

ACCOUNT_NO는 역순으로 10만부터 출력해야합니다.  제가 JOIN을 해볼려고 아무리 해도 ROWNUM으로 JOIN은 안되서 고수님들께 여쭤봅니다.

 

by 마농 [2020.04.21 13:12:15]

굳이 왜? 이렇게 하려는지는 모르겠지만?
인라인뷰를 이용해 중간집합을 만들어 중간집합끼리 조인하시면 됩니다.
아우터 조인이 필요할 수 도 있구요.


by hclee [2020.04.21 13:44:05]

질문에 대해 답변을 주셔서 감사합니다.  인라인뷰를 이용해서 성공했습니다.

SELECT A.NUM, A.ACCOUNT_NO, B.COMP_NO, B.COMP_NA
FROM
(
SELECT 
ROW_NUMBER() OVER (ORDER BY ACCOUNT_NO DESC) AS NUM,
ACCOUNT_NO , COMP_NO
FROM TEST1
) A,

(
SELECT 
ROW_NUMBER() OVER (ORDER BY COMP_NO) AS NUM,
COMP_NO,COMP_NA
FROM TEST2
) B

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