쿼리문 질문입니다..ㅠ0ㅠ 0 7 851

by 소영 [SQL Query] [2016.11.24 11:56:12]



테이블 1
   코드   명
   001 공공일
    .
    .
    .
   005 공공오
    .
    .
   100 일공공    

테이블 2
 코드1  코드2 코드3 ----코드10
 001     005   006           010  

---결과---
코드  명
001 공공일
005 공공오

006 공공육

010 공일공

 

이런식으로 나오게하고싶은데..어떻게 해야할지 감이안잡혀서요..ㅠㅠ

답변주시면 감사하겠습니다.ㅠㅠ

 

테이블2에 코드1~코드10중 null인컬럼도있습니다..

by jkson [2016.11.24 13:01:36]
WITH T1 AS
(
SELECT '001' COL1, '005' COL2, '006' COL3
, NULL COL4, NULL COL5, NULL COL6, NULL COL7
, NULL COL8, NULL COL9, '010' COL10 FROM DUAL
)
, T2 AS
(
SELECT '001' CD, '공공일' CDNM FROM DUAL UNION ALL
SELECT '005' CD, '공공오' CDNM FROM DUAL UNION ALL
SELECT '006' CD, '공공육' CDNM FROM DUAL UNION ALL
SELECT '010' CD, '공일공' CDNM FROM DUAL
)
--pivot
SELECT VAL, CDNM
FROM
(
SELECT * FROM T1
UNPIVOT (VAL FOR GB IN(COL1,COL2,COL3,COL4,COL5,COL6,COL7,COL8,COL9,COL10))
) A, T2 B
WHERE A.VAL = B.CD
--행복사
SELECT VAL, CDNM
FROM
(
SELECT DECODE(LV,1,COL1,2,COL2,3,COL3,4,COL4,5,COL5,6,COL6,7,COL7,8,COL8,9,COL9,10,COL10) VAL 
FROM T1
,(SELECT LEVEL LV FROM DUAL CONNECT BY LEVEL <= 10)
) A, T2 B
WHERE A.VAL = B.CD

 


by 소영 [2016.11.24 13:34:06]

감사합니다! ㅠㅠ 


by 마농 [2016.11.24 13:08:30]
WITH code_t AS
(
SELECT '001' cd, '공공일' nm FROM dual
UNION ALL SELECT '002', '공공이' FROM dual
UNION ALL SELECT '005', '공공오' FROM dual
UNION ALL SELECT '006', '공공육' FROM dual
UNION ALL SELECT '010', '공일공' FROM dual
UNION ALL SELECT '100', '일공공' FROM dual
)
, data_t(pk, cd1, cd2, cd3, cd4, cd5, cd6, cd7, cd8, cd9, cd10) AS
(
SELECT 1, '001', '005', '006', '100', '', '', '', '', '', '' FROM dual
UNION ALL SELECT 2, '001', '002', '010', '', '', '', '', '', '', '' FROM dual
)
SELECT a.pk
     , b.cd
     , b.nm
  FROM data_t a
     , code_t b
 WHERE b.cd IN (a.cd1, cd2, cd3, cd4, cd5, cd6, cd7, cd8, cd9, cd10)
 ORDER BY a.pk, b.cd
;

 


by jkson [2016.11.24 13:13:52]

이렇게 쉬운 방법이-_-;;


by 소영 [2016.11.24 13:34:31]

감사합니다! ㅠㅠ 많은 도움됐습니다!!


by jkson [2016.11.24 13:35:53]

마농님 답변이 훨씬 효율적이고 간단한 쿼리입니다. 가끔 제가 이러려고 댓글 쓰나 하는 자괴감이...


by 소영 [2016.11.24 13:40:09]

두분 답변 모두 감사합니다ㅠ0ㅠ UNPIVOT이라는 개념도 익혔구요! ㅎㅎㅎ 아직 신입이라 많이 부족해서요 ㅠㅠ 정말 감사합니다~^^

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