SELECT 1 idx, 'A' col1, 11 col2, '가' col3 FROM dual
UNION ALL SELECT 2, 'B', 22, '나' FROM dual
UNION ALL SELECT 3, 'C', 33, '다' FROM dual
UNION ALL SELECT 4, 'D', 44, '라' FROM dual
UNION ALL SELECT 5, 'E', 55, '마' FROM dual ;
위와 같은 여러행의 데이터를 idx 순으로 아래처럼 한행으로 표현하고 싶습니다.
SELECT 'A' col1, 11 col2, '가' col3,
'B' col4, 22 col5, '나' col6,
'C' col7, 33 col8, '다' col9,
'D' col10, 44 col11, '라'col12,
'E' col13, 55 col14, '마' COL15
FROM dual ;
제가 아는 방법은 아래와 같은 방법인데 좀 더 효율적인 방법이 없을까요?
행의 개수가 고정이라 아래와 같은 방법을 쓰긴 했지만 데이터 건수가 많아질 경우 좀 무식한 방법인듯 합니다.
WITH t AS
(
SELECT 1 idx, 'A' col1, 11 col2, '가' col3 FROM dual
UNION ALL SELECT 2, 'B', 22, '나' FROM dual
UNION ALL SELECT 3, 'C', 33, '다' FROM dual
UNION ALL SELECT 4, 'D', 44, '라' FROM dual
UNION ALL SELECT 5, 'E', 55, '마' FROM dual
)
SELECT MAX(CASE WHEN idx = 1 THEN col1 END) AS col1
, MAX(CASE WHEN idx = 1 THEN col2 END) AS col2
, MAX(CASE WHEN idx = 1 THEN col3 END) AS col3
, MAX(CASE WHEN idx = 2 THEN col1 END) AS col4
, MAX(CASE WHEN idx = 2 THEN col2 END) AS col5
, MAX(CASE WHEN idx = 2 THEN col3 END) AS col6
, MAX(CASE WHEN idx = 3 THEN col1 END) AS col7
, MAX(CASE WHEN idx = 3 THEN col2 END) AS col8
, MAX(CASE WHEN idx = 3 THEN col3 END) AS col9
, MAX(CASE WHEN idx = 4 THEN col1 END) AS col10
, MAX(CASE WHEN idx = 4 THEN col2 END) AS col11
, MAX(CASE WHEN idx = 4 THEN col3 END) AS col12
, MAX(CASE WHEN idx = 5 THEN col1 END) AS col13
, MAX(CASE WHEN idx = 5 THEN col2 END) AS col14
, MAX(CASE WHEN idx = 5 THEN col3 END) AS col15
FROM t ;
고수님들의 답변 부탁드립니다.