SELECT '2017' A, 1 B FROM DUAL UNION ALL
SELECT '2017' A, 2 B FROM DUAL UNION ALL
SELECT '2017' A, 3 B FROM DUAL UNION ALL
SELECT '2018' A, 4 B FROM DUAL UNION ALL
SELECT '2018' A, 1 B FROM DUAL UNION ALL
SELECT '2018' A, 2 B FROM DUAL UNION ALL
SELECT '2019' A, 3 B FROM DUAL UNION ALL
SELECT '2019' A, 4 B FROM DUAL UNION ALL
SELECT '2019' A, 1 B FROM DUAL
아래처럼 나타내고 싶은데,,방법이 있을까요....
2017 1 2018 4 2019 3
2017 2 2018 1 2019 4
2017 3 2018 2 2019 1
with t as (SELECT '2017' A, 1 B FROM DUAL UNION ALL SELECT '2017' A, 2 B FROM DUAL UNION ALL SELECT '2017' A, 3 B FROM DUAL UNION ALL SELECT '2018' A, 4 B FROM DUAL UNION ALL SELECT '2018' A, 1 B FROM DUAL UNION ALL SELECT '2018' A, 2 B FROM DUAL UNION ALL SELECT '2019' A, 3 B FROM DUAL UNION ALL SELECT '2019' A, 4 B FROM DUAL UNION ALL SELECT '2019' A, 1 B FROM DUAL ) select min(decode(g2, 1, a)) as a1, min(decode(g2, 1, b)) as a2 , min(decode(g2, 2, a)) as b1, min(decode(g2, 2, b)) as b2 , min(decode(g2, 3, a)) as c1, min(decode(g2, 3, b)) as c2 from (select a, b , row_number() over(partition by a order by a) g1 , dense_rank() over(order by a) g2 from t ) group by g1 ;