안녕하세요 오라클 1:N:N... 쿼리 질문이 있습니다. 0 2 2,793

by 슈퍼피카땡 [SQL Query] 1대N 1대다 병합 [2024.01.24 11:37:17]


Table 1 

PK 성명
1 강감찬
2 이순신

Table 2 

직업 FK
개발자 1
CEO 1
DBA 2
CISO 2
PM 2

Table 3

취미 FK
피아노 1
태권도 2
활쏘기 2

원하는 결과값

PK 성명 직업 취미
1 강감찬 개발자 피아노
    CEO  
2 이순신 DBA 태권도
    CISO 활쏘기
    PM  

입니다~

예전에 여기서 마농님이셨던가 다른 분 질문에 답변된걸 본적이 있던것 같은데..

고수님들의 의견 부탁드리겠습니다. 감사합니다.

 

 

by 마농 [2024.01.24 13:22:33]
WITH t1 AS
(
SELECT 1 pk, '강감찬' 성명 FROM dual
UNION ALL SELECT 2, '이순신' FROM dual
)
, t2 AS
(
SELECT '개발자' 직업, 1 fk FROM dual
UNION ALL SELECT 'CEO'   , 1 FROM dual
UNION ALL SELECT 'DBA'   , 2 FROM dual
UNION ALL SELECT 'CISO'  , 2 FROM dual
UNION ALL SELECT 'PM'    , 2 FROM dual
)
, t3 AS
(
SELECT '피아노' 취미, 1 fk FROM dual
UNION ALL SELECT '태권도', 2 FROM dual
UNION ALL SELECT '활쏘기', 2 FROM dual
)
SELECT pk
     , rn
     , MIN(성명) 성명
     , MIN(직업) 직업
     , MIN(취미) 취미
  FROM (SELECT pk
             , 1 rn
             , 성명
             , '' 직업
             , '' 취미
          FROM t1
         UNION ALL
        SELECT fk
             , ROW_NUMBER() OVER(PARTITION BY fk ORDER BY 1) rn
             , '' 성명
             , 직업
             , '' 취미
          FROM t2
         UNION ALL
        SELECT fk
             , ROW_NUMBER() OVER(PARTITION BY fk ORDER BY 1) rn
             , '' 성명
             , '' 직업
             , 취미
          FROM t3
        )
 GROUP BY pk, rn
 ORDER BY pk, rn
;

 


by 슈퍼피카땡 [2024.01.24 15:11:54]

감사합니다 마농님 쿼리 관련 막히면 마농님 덕을 보는것 같네요 

항상 감사합니다 ㅎㅎ

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