반갑습니다. 데이타를 집계 해야하는데... 고민을 해봐도 방향을 못잡아 이렇게 질문드립니다.
-- 데이타 with t01 as ( select '03' id, '1' step from dual union all select '03' id, '2' step from dual union all select '03' id, '1' step from dual union all select '03' id, '2' step from dual union all select '04' id, '1' step from dual union all select '04' id, '2' step from dual union all select '04' id, '1' step from dual union all select '05' id, '1' step from dual union all select '05' id, '2' step from dual union all select '05' id, '3' step from dual) select * from t01 ; -- 현재 데이타 ID STEP 03 1 03 2 03 1 03 2 04 1 04 2 04 1 05 1 05 2 05 3 --원하는 형태 ID STEP 03 1,2 03 1,2 04 1,2 04 1 05 1,2,3
즉 id 별로 step값이 순서대로 나오는데,
id별 step 1을 기준으로 최대값까지 하나의 로우를 만드는 것인데..
로우의 갯수가 부정형이다보니 답을 구하기 어렵네요.
동일한 id로 그룹핑도 못하고...
고민을 해봐도 진전이 없어 이렇게 질문드립니다.
선배님들의 조언 부탁드립니다.
감사합니다.
with t01 as ( select '03' id, '1' step from dual union all select '03' id, '2' step from dual union all select '03' id, '1' step from dual union all select '03' id, '2' step from dual union all select '04' id, '1' step from dual union all select '04' id, '2' step from dual union all select '04' id, '1' step from dual union all select '05' id, '1' step from dual union all select '05' id, '2' step from dual union all select '05' id, '3' step from dual) select id, listagg(step,',') within group(order by step) from ( select id, step , row_number() over(partition by id, step order by step) rn from t01 ) group by id, rn order by id, rn