SQL 만으로 가변 컬럼을 구현할 수는 없습니다.
출력 컬럼의 개수를 고정으로 정해서 구현하거나
동적쿼리를 이용해 구현해야 합니다.
WITH t AS ( SELECT '홍길동' nm, '1,2,3' v1, '7,8' v2 FROM dual UNION ALL SELECT '고길동', '2,3', '5,6,7,8' FROM dual ) -- 1안) 항목별 4개씩 고정 SELECT nm , REGEXP_SUBSTR(v1, '[^,]+', 1, 1) v1_1 , REGEXP_SUBSTR(v1, '[^,]+', 1, 2) v1_2 , REGEXP_SUBSTR(v1, '[^,]+', 1, 3) v1_3 , REGEXP_SUBSTR(v1, '[^,]+', 1, 4) v1_4 , REGEXP_SUBSTR(v2, '[^,]+', 1, 1) v2_1 , REGEXP_SUBSTR(v2, '[^,]+', 1, 2) v2_2 , REGEXP_SUBSTR(v2, '[^,]+', 1, 3) v2_3 , REGEXP_SUBSTR(v2, '[^,]+', 1, 4) v2_4 FROM t ;
WITH t AS ( SELECT '홍길동' nm, '1,2,3' v1, '7,8' v2 FROM dual UNION ALL SELECT '고길동', '2,3', '5,6,7,8' FROM dual ) -- 2안) 두개 항목 합쳐서 8개 고정 SELECT nm , REGEXP_SUBSTR(v, '[^,]+', 1, 1) v_1 , REGEXP_SUBSTR(v, '[^,]+', 1, 2) v_2 , REGEXP_SUBSTR(v, '[^,]+', 1, 3) v_3 , REGEXP_SUBSTR(v, '[^,]+', 1, 4) v_4 , REGEXP_SUBSTR(v, '[^,]+', 1, 5) v_5 , REGEXP_SUBSTR(v, '[^,]+', 1, 6) v_6 , REGEXP_SUBSTR(v, '[^,]+', 1, 7) v_7 , REGEXP_SUBSTR(v, '[^,]+', 1, 8) v_8 FROM (SELECT nm , v1 || ',' || v2 v FROM t ) ;