2013년 2월 20일 수요일

oracle 다중 Row를 한 컬럼으로 처리


 SELECT TASK_SEQ,
           SUBSTR(MAX(SYS_CONNECT_BY_PATH(COMP_NM,',')),2)
    FROM (
             SELECT TASK_SEQ, COMP_NM ,
                    ROW_NUMBER() OVER(PARTITION BY TASK_SEQ ORDER BY TASK_SEQ) AS RNUM
             FROM W_MINI_TASK_COMP
             WHERE  task_seq = 8235
         )
    START WITH RNUM =1
    CONNECT BY PRIOR RNUM = RNUM -1 AND PRIOR TASK_SEQ = TASK_SEQ
    GROUP BY TASK_SEQ
 
   - W_MINI_TASK_COMP 이 PK 는 TASK_SEQ , TASK_COMP_SEQ 이고 ',' 로 묶고자 하는 회사명의 GROUP KEY 는 TASK_SEQ