도와주세요ㅠㅠ 하나의 정보를 조회하는데 쿼리 결과가 두줄로 구성됩니다 이걸 한줄로 조회되게 보고 싶습니다 0 2 3,702

by 윤 [SQL Query] SQL Oracle [2020.11.16 14:31:17]


SELECT
    CASE WHEN A.A01_ID = B.B_ID THEN B.B_NM ELSE '' END A01_NM
    , CASE WHEN A.A02_ID = B.B_ID THEN B.B_NM ELSE '' END A02_NM
    , A.*
FROM
    TABLE_A A
    TABLE_B B
WHERE
    A.A01_ID = B.B_ID
    OR A.A02_ID = B.B_ID



[질문]
A테이블의 간략한 구성을 보면
계약ID 하나에 주고객ID와 서브고객ID로 구성이 되어있습니다(1개의 ROW)

고객의 이름을 알고 싶어서 TABLE_B와 조인을 했는데요
CASE문을 사용해서 각 ID와 일치하는 이름을 불러와서 보여주려고 했습니다
하지만 이렇게 조회되는 경우
------------------------------------------------------------------------------------------
A01_NM   |   A02_NM   |   A테이블의 정보~
------------------------------------------------------------------------------------------
이름1          NULL             정보1~
NULL          이름2             정보1~

이렇게 출력이 됩니다

이 결과를
------------------------------------------------------------------------------------------
A01_NM   |   A02_NM   |   A테이블의 정보~
------------------------------------------------------------------------------------------
이름1        이름2             정보1~


이렇게 한줄로 확인 하고 싶은데 이런식으로 출력하려면
CASE문을 작성한 곳에 MAX로 묶어서 NULL 대신 데이터가 조회되게 하며
나머지 A테이블 정보의 컬럼을 모두 나열해서 GROUP BY 해주는 방법밖에 없는건가요ㅠㅠ

 

by 마농 [2020.11.16 14:53:54]
-- null 이나 이상한 값이 들어있지 않다면 아우터조인 기호(+)를 빼셔도 됩니다.
SELECT a.a01_id
     , b.b_nm   a01_nm
     , a.a02_id
     , c.b_nm   a02_nm
  FROM table_a a
     , table_b b
     , table_b c
 WHERE a.a01_id = b.b_id(+)
   AND a.a02_id = c.b_id(+)
;

 


by 윤 [2020.11.16 15:02:16]

넵!! null이나 이상한 값이 들어있지는 않습니다!

매번 도움을 많이 받고 있네요ㅠㅠ

늘 감사합니다:)

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