안녕하세요!
지금 데이터가 테이블에
| 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 말고 다른 좋은 방법 있으면 알려주세요 ㅠㅠ감사합니다
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)
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) ) ) ;