조인조건에 맞지 않을 경우 기본 값 조인하기 문의 합니다. 1 3 1,777

by 정도경영 [Oracle 기초] [2023.06.07 17:04:30]


CCCCC.png (17,695Bytes)

 WITH  A  AS  (
                  SELECT    'A'  CD    FROM  DUAL
                  UNION  ALL
                  SELECT    'C'  CD    FROM  DUAL
                  )                  
                  ,B  AS   (              
                  SELECT    'DEFAULT'  CD  ,'77777'  CD_NO  FROM  DUAL
                  UNION ALL
                  SELECT    'A'  CD  ,'9999'  CD_NO  FROM  DUAL                                      
                  )
                  SELECT  A.CD,   B.CD_NO 
                   FROM  A  A,  B  B
                  WHERE A.CD=B.CD(+)  
                     
                  ;

 

조인 조건에 없는  C에 대해서는 "DEFAULT" 값인  77777이 표기 되었으면 합니다. 

어떻게 조인 하면은 될지 문의 드립니다.

by pajama [2023.06.07 18:39:33]

NVL(B.CD_NO , '77777') 로 사용하는 방식은 안되시는지요?


by 뉴비디비 [2023.06.07 18:42:15]
WITH A AS (
	SELECT 'A' CD FROM  DUAL UNION  ALL
	SELECT 'C' FROM  DUAL
), B AS (              
	SELECT 'DEFAULT'  CD  ,'77777'  CD_NO  FROM  DUAL UNION ALL
	SELECT 'A' CD ,'9999'  CD_NO  FROM  DUAL                                      
)
SELECT 
	CD, CD_NO 
FROM (
	SELECT 
		A.CD, B.CD_NO, ROW_NUMBER() OVER(PARTITION BY A.CD ORDER BY CASE WHEN A.CD = B.CD THEN 1 ELSE 2 END ) rn 
	FROM  A 
	LEFT JOIN B ON A.CD = B.CD OR B.CD = 'DEFAULT'
) tbl 
WHERE rn = 1 

 


by 마농 [2023.06.07 19:10:00]
WITH a AS
(
SELECT 'A' cd FROM dual
UNION ALL SELECT 'C' FROM dual
)
, b AS
(
SELECT 'DEFAULT' cd, '77777' cd_no FROM dual
UNION ALL SELECT 'A', '9999' FROM dual
)
SELECT a.cd
     , c.cd_no
  FROM a a
     , b b
     , b c
 WHERE a.cd = b.cd(+)
   AND c.cd = NVL(b.cd, 'DEFAULT')
;

 

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