쿼리 좀 도움 요청드립니다. ㅠㅠ 0 1 4,438

by oneg [SQL Query] [2023.12.22 15:09:55]


재직~퇴직정보가 여러번 있는 경우에 재직~퇴직 당 한줄로 나오게 하고 싶은데, 잘 안됩니다. 도움을 좀 요청드려요

아래 표를 보면 한 대상이 재직~퇴직을 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
by 마농 [2023.12.26 08:36:22]
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
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입