한 행을 여러 행으로 나누는 질문드려요! 1 2 1,749

by 밀크캬라멜 [2015.04.22 17:22:14]


 

안녕하세요!

 

지금 데이터가 테이블에

A B C D E F
100 200 300 400 500 600

이런 식으로 데이터가 입력되어있습니다. 한ROW지요..

 

조회해서 출력할 때

100 200
300 400
500 600

 

이런 식으로 나타내고 싶습니다.

제가 생각하고 있는 방법은 UNION을 사용해서 하려고 했는데요..

SELECT VAL1, VAL2
FROM
(
SELECT A VAL1, B VAL2
FROM TABLE
UNION
SELECT C VAL1, D VAL2
FROM TABLE
UNION
SELECT E VAL1, F VAL2
FROM TABLE
)

 

저렇게 행이 많아지다 보니 쿼리가 너무 길어져서요..ㅠㅠ

UNION 말고 다른 좋은 방법 있으면 알려주세요 ㅠㅠ감사합니다

by rain748 [2015.04.22 17:36:48]

with t as (
select 100 a, 200 b, 300 c, 400 d, 500 e, 600 f from dual
)
select max(decode(lv,1,a,3,c,5,e)) a, max(decode(lv,2,b,4,d,6,f)) b
from t a, (select level lv from dual connect by level <= 6)
group by ceil(lv/2)


by 마농 [2015.04.22 17:58:42]
SELECT DECODE(lv, 1, a, 2, c, 3, e) v1
     , DECODE(lv, 1, b, 2, d, 3, f) v2
  FROM t
     , (SELECT LEVEL lv FROM dual CONNECT BY LEVEL <= 3)
;
SELECT v1, v2
  FROM t
 UNPIVOT ( (v1, v2) FOR gb IN ( (a, b), (c, d), (e, f) ) )
;

 

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