database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 41540 게시물 읽기
No. 41540
근무기간 구하기
작성자
IT재벌(IT재벌)
작성일
2018-03-26 17:26:47
조회수
803

발령에 따른 조직별 근무기간을 구하는 쿼리를 짜고 싶습니다.

특정 사유에 따라 같은 조직코드를 가지고 있으나

발령이 나는 경우가 있습니다.

 

최종 원하는 결과는 각 조직코드별로 min(발령시작일), max(발령종료일)을

가져오고 싶으나 중간에 다른 조직코드가 있다면 그 기간을 별도로 처리하고 싶습니다.

 

예를 들어서 아래의 조직 발령을

 

A 2017.07.01 2017.12.31

A 2017.01.01 2017.06.30

C 2015.01.01 2016.12.31

A 2014.01.01 2014.12.31

A 2013.01.01 2013.12.31

B 2012.01.01 2012.12.31

A 2010.01.01 2011.12.31

 

 

아래 처럼 기간이 중복되는 경우에는 합쳐져 보이도록 가져오고 싶습니다.

A 2017.01.01 2017.12.31

C 2015.01.01 2016.12.31

A 2013.01.01 2014.12.31

B 2012.01.01 2012.12.31

A 2010.01.01 2011.12.31

이 글에 대한 댓글이 총 2건 있습니다.

WITH t AS
(
SELECT 'A' cd, '2017.07.01' sdt, '2017.12.31' edt FROM dual
UNION ALL SELECT 'A', '2017.01.01', '2017.06.30' FROM dual
UNION ALL SELECT 'C', '2015.01.01', '2016.12.31' FROM dual
UNION ALL SELECT 'A', '2014.01.01', '2014.12.31' FROM dual
UNION ALL SELECT 'A', '2013.01.01', '2013.12.31' FROM dual
UNION ALL SELECT 'B', '2012.01.01', '2012.12.31' FROM dual
UNION ALL SELECT 'A', '2010.01.01', '2011.12.31' FROM dual
)
SELECT cd
     , MIN(sdt) sdt
     , MAX(edt) edt
  FROM (SELECT cd, sdt, edt
             , ROW_NUMBER() OVER(ORDER BY sdt)
             - ROW_NUMBER() OVER(PARTITION BY cd ORDER BY sdt) grp
          FROM t
        )
 GROUP BY cd, grp
 ORDER BY sdt DESC
;

마농(manon94)님이 2018-03-26 22:23:30에 작성한 댓글입니다.

마농님 감사합니다.~

IT재벌(IT재벌)님이 2018-03-29 07:58:00에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
41544cursor 문의 (마농님 부탁드립니다 !) [2]
Tevere
2018-04-02
899
41543UNION 대신 사용할 방법 [12]
초보자
2018-03-29
1101
41541세로 데이터를 가로로 만들 때 [4]
초보자
2018-03-27
1098
41540근무기간 구하기 [2]
IT재벌
2018-03-26
803
41539쿼리 질문드려요~ 답변부탁드립니다. [1]
잘될거다
2018-03-23
780
41538컬럼별로 카운트 하는방법 알려주세요 [3]
민재영
2018-03-22
812
41537순번 먹이기(제발 도와주세요.ㅠㅠㅠㅠ) [2]
일쌍다반사
2018-03-21
889
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2018 DSN, All rights reserved.
작업시간: 0.123초, 이곳 서비스는
	PostgreSQL v10.4로 자료를 관리합니다