컬럼 여러개를 한행으로 가능한가요? 1 6 1,211

by 혜당화 [2015.11.25 17:22:05]


안녕하세요 질문이 있어 글을 올립니다.

B

A B C D E
1.2 3.1 7.4 NULL NULL
4.1 5.1 9.6 1.1 NULL
1 7 6 8 9

와 같이 컬럼이 5개 있습니다.

이 클럽에서 NULL을 제외하고 

ABCDE 라는 하나의 컬럼에 출력하고 싶어요.

ABCDE

1.2

3.1

7.4

4.1

5.1

9.6

과 출력하고자 합니다. 조언 부탁드립니다.

 

by 마농 [2015.11.25 17:38:43]
WITH t AS
(
SELECT 1.2 a, 3.1 b, 7.4 c, null d, null e FROM dual
UNION ALL SELECT 4.1, 5.1, 9.6, 1.1, null FROM dual
UNION ALL SELECT 1, 7, 6, 8, 9 FROM dual
)
SELECT abcde
  FROM t
 UNPIVOT (abcde FOR gb IN (a, b, c, d, e))
;

 


by 혜당화 [2015.11.26 09:52:33]

마농님 답변 항상 감사합니다.


by 혜당화 [2015.11.26 09:54:52]

마농님 하나만 더 여쭤봐도 될까요?

UNPIVOT (ABCDE FOR GB 에서 GB라도 임의의 값을 줬을때 어떻게 되는건지

이해가 안되어서요 쓰는건 그냥 쓰면 잘 작동하네요.


by 마농 [2015.11.26 10:40:40]

SELECT * 로 바꿔 조회해 보시면 대충 감이 오실 듯.


by 우리집아찌 [2015.11.25 18:07:48]
WITH T AS (
SELECT '1.2' A , '3.1' B, '7.4' C, NULL D, NULL E FROM DUAL UNION ALL
SELECT '4.1' A , '5.1' B, '9.6' C, '1.1' D, NULL E FROM DUAL UNION ALL
SELECT '1' A , '7' B, '6' C, '8' D, '9' E FROM DUAL 
)

SELECT  
     REGEXP_SUBSTR(TXT,'[^,]+',1,LV) COL
  FROM
 (SELECT ROWNUM RN , A ||','|| B ||','|| C ||','|| D ||','|| E TXT
  FROM T ) A
 ,(SELECT LEVEL LV FROM DUAL CONNECT BY LEVEL <=5 ) B
WHERE REGEXP_SUBSTR(TXT,'[^,]+',1,LV)  IS NOT NULL
ORDER BY RN, ROWNUM

 


by 혜당화 [2015.11.26 09:52:43]

아찌님 답변 감사합니다.

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