조인수정 어렵네요. 0 3 2,915

by 초보개발 [Oracle 기초] [2024.02.16 13:55:15]


안녕하세요.갑자기 수정본이 잡혀서 생각이 잘 안나서 고수님들의 도움을 부탁드립니다.

A테이블 

seqno Date
10 20231010
20 20231111

B테이블

seqno Cnt
10 100
30 200

결과

조회조건 seqno=10

seqno Date Cnt
10 20231010 100
     

조회조건 seqno =20

seqno date Cnt
20 20231111  

조회조건 seqno=30

seqno Date Cnt
30   200

계속 아리송하네요.

부탁드립니다.

by 마농 [2024.02.18 22:30:28]
WITH t1 AS
(
SELECT 10 seqno, '20231010' dt FROM dual
UNION ALL SELECT 20, '20231111' FROM dual
)
, t2 AS
(
SELECT 10 seqno, 100 cnt FROM dual
UNION ALL SELECT 30, 200 FROM dual
)
SELECT seqno
     , MIN(dt) dt
     , MIN(cnt) cnt
  FROM (SELECT seqno, dt, null cnt FROM t1
         UNION ALL
        SELECT seqno, null dt, cnt FROM t2
        )
  WHERE seqno = 30
 GROUP BY seqno
;

 


by 초보개발 [2024.02.19 08:12:52]

너무 너무 감사드립니다.

어느 방향으로 할지 감을 잡았습니다.

그런데 하나만 더 물어봐도 될까요?

A, B 테이블을 예시로 질문을 했는데요.

GROUP BY를 하기엔 각 테이블의 컬럼이 각각 50개씩 총 100개을 추출합니다.

혹 GROUP BY말로 혹 다른 방법이 있을까요?

죄송합니다.


by 마농 [2024.02.19 15:20:06]
WITH t1 AS
(
SELECT 10 seqno, '20231010' dt FROM dual
UNION ALL SELECT 20, '20231111' FROM dual
)
, t2 AS
(
SELECT 10 seqno, 100 cnt FROM dual
UNION ALL SELECT 30, 200 FROM dual
)
SELECT NVL(a.seqno, b.seqno) seqno
     , a.dt
     , b.cnt
  FROM (SELECT * FROM t1 WHERE seqno = :v_seqno) a
  FULL OUTER JOIN
       (SELECT * FROM t2 WHERE seqno = :v_seqno) b
    ON a.seqno = b.seqno
;

 

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