이런 테이블이 있을때
1번계획 A 1 1 B 2 2
2번계획 A 2 2 B 5 5
2번계획 B 6 6
3번계획 A 4 4
이런식으로 출력하고싶은데요 도움좀 ㅠㅠ
with t as ( select '1번계획' pln, 'A' dv, 1 val1, 1 val2 from dual union all select '1번계획', 'B', 2, 2 from dual union all select '2번계획', 'A', 3, 3 from dual union all select '3번계획', 'A', 4, 4 from dual union all select '2번계획', 'B', 5, 5 from dual union all select '2번계획', 'B', 6, 6 from dual ) select pln , max(case when col = 1 then dv end) dv_1 , max(case when col = 1 then val1 end) val1_1 , max(case when col = 1 then val2 end) val2_1 , max(case when col = 2 then dv end) dv_2 , max(case when col = 2 then val1 end) val1_2 , max(case when col = 2 then val2 end) val2_2 from ( select pln , dv , val1 , val2 , row_number()over(partition by dv order by val1) rn , case when dv = 'A' then 1 else 2 end col from t ) group by pln, rn
WITH t AS ( SELECT '1번계획' c1, 'A' c2, 1 v1, 1 v2 FROM dual UNION ALL SELECT '1번계획', 'B', 2, 2 FROM dual UNION ALL SELECT '2번계획', 'A', 3, 3 FROM dual UNION ALL SELECT '3번계획', 'A', 4, 4 FROM dual UNION ALL SELECT '2번계획', 'B', 5, 5 FROM dual UNION ALL SELECT '2번계획', 'B', 6, 6 FROM dual ) SELECT c1 , MIN(DECODE(c2, 'A', c2)) c2_a , MIN(DECODE(c2, 'A', v1)) v1_a , MIN(DECODE(c2, 'A', v2)) v2_a , MIN(DECODE(c2, 'B', c2)) c2_b , MIN(DECODE(c2, 'B', v1)) v1_b , MIN(DECODE(c2, 'B', v2)) v2_b FROM ( SELECT c1, c2, v1, v2 , ROW_NUMBER() OVER(PARTITION BY c1, c2 ORDER BY v1, v2) rn FROM t ) GROUP BY c1, rn ORDER BY c1, rn ;
우와 정말 감사합니다.
너무 신기하네요 ㅠㅜ