재직~퇴직정보가 여러번 있는 경우에 재직~퇴직 당 한줄로 나오게 하고 싶은데, 잘 안됩니다. 도움을 좀 요청드려요
아래 표를 보면 한 대상이 재직~퇴직을 2번 했는데
1번 2003-03-01 ~ 2004-02-29
2번 2006-03-01 ~ 2009-02-28
이렇게 두줄로 나오게 하고 싶은데 잘 안되네요.
아이디 | 구분 | 시작일자 | 종료일자 |
user1 | 재직 | 2003-03-01 | 2006-02-28 |
user1 | 퇴직 | 2004-02-29 | 2004-02-29 |
user1 | 재직 | 2006-03-01 | 2007-02-28 |
user1 | 재직 | 2007-03-01 | 2008-02-29 |
user1 | 재직 | 2008-03-01 | 2009-02-28 |
user1 | 퇴직 | 2009-02-28 | 2009-02-28 |
WITH t AS ( SELECT 'user1' id, '재직' gb, '2003-03-01' sdt, '2006-02-28' edt FROM dual UNION ALL SELECT 'user1', '퇴직', '2004-02-29', '2004-02-29' FROM dual UNION ALL SELECT 'user1', '재직', '2006-03-01', '2007-02-28' FROM dual UNION ALL SELECT 'user1', '재직', '2007-03-01', '2008-02-29' FROM dual UNION ALL SELECT 'user1', '재직', '2008-03-01', '2009-02-28' FROM dual UNION ALL SELECT 'user1', '퇴직', '2009-02-28', '2009-02-28' FROM dual ) SELECT id , seq , MIN(sdt) sdt , MAX(edt) edt FROM (SELECT id, gb, sdt, edt , COUNT(DECODE(gb, '퇴직', 1)) OVER(PARTITION BY id ORDER BY sdt ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) + 1 seq FROM t ) GROUP BY id, seq ORDER BY id, seq ;