재직~퇴직정보가 여러번 있는 경우에 재직~퇴직 당 한줄로 나오게 하고 싶은데, 잘 안됩니다. 도움을 좀 요청드려요
아래 표를 보면 한 대상이 재직~퇴직을 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
;