같은 그룹내 기간 검색 0 2 1,023

by 그루비 [ALTIBASE] 기간검색 찾기 [2018.10.29 15:29:45]


그룹 아이디 이름 주소 시작일 종료일
A APPLE 사과 서울 서초구 20180101 20180131
A ANIMAL 동물 서울 강서구 20180401 20180531
A ANIMAL 동물 서울 강남구 20180101 20180230
A APPLE 사과 서울 종로구 20180501 20180731
A ANT 개미 서울 서초구 20180104 20180131
A ANT 개미 서울 강서구 20180201 20180331
A ANY 애니 서울 강남구 20180101 20180130
A ANY 애니 서울 종로구 20180131 20180531
A ANY 애니 서울 서초구 20180601 20180630

A ~ F 그룹이 있는데

해당 그룹 이면서 시작일과 종료일 겹치는게 1개월 이상 되는 항목을 뽑을 수 있을까요?????

 

예를 들어 사과를 기준으로 한다고 한다면

A ANIMAL 동물 서울 강남구 20180101 20180230
A ANY 애니 서울 강남구 20180101 20180130
A ANY 애니 서울 서초구 20180601 20180630

 

이 나와야 합니다.

 

날짜 조회중에 겹치는 날짜에 대해서 조회가 되는게 있는지도 궁금합니다.

by 마농 [2018.10.29 18:38:46]
WITH t AS
(
SELECT 'A' grp, 'APPLE' id, '사과' nm, '서울 서초구' addr, '20180101' sdt, '20180131' edt FROM dual
UNION ALL SELECT 'A', 'ANIMAL', '동물', '서울 강서구', '20180401', '20180531' FROM dual
UNION ALL SELECT 'A', 'ANIMAL', '동물', '서울 강남구', '20180101', '20180230' FROM dual
UNION ALL SELECT 'A', 'APPLE' , '사과', '서울 종로구', '20180501', '20180731' FROM dual
UNION ALL SELECT 'A', 'ANT'   , '개미', '서울 서초구', '20180104', '20180131' FROM dual
UNION ALL SELECT 'A', 'ANT'   , '개미', '서울 강서구', '20180201', '20180331' FROM dual
UNION ALL SELECT 'A', 'ANY'   , '애니', '서울 강남구', '20180101', '20180130' FROM dual
UNION ALL SELECT 'A', 'ANY'   , '애니', '서울 종로구', '20180131', '20180531' FROM dual
UNION ALL SELECT 'A', 'ANY'   , '애니', '서울 서초구', '20180601', '20180630' FROM dual
)
SELECT a.grp
     , a.id id_a, a.sdt sdt_a, a.edt edt_a
     , b.id id_b, b.sdt sdt_b, b.edt edt_b
     , GREATEST(a.sdt, b.sdt) sdt_dup
     , LEAST   (a.edt, b.edt) edt_dup
  FROM t a
     , t b
 WHERE a.grp  = b.grp
   AND a.id  != b.id
   AND a.sdt <= b.edt
   AND b.sdt <= a.edt
   AND a.grp  = 'A'
   AND a.id   = 'APPLE'
   AND MONTHS_BETWEEN( TO_DATE(LEAST   (a.edt, b.edt), 'yyyymmdd') + 1
                     , TO_DATE(GREATEST(a.sdt, b.sdt), 'yyyymmdd') ) >= 1
;

 


by 그루비 [2018.10.30 09:43:56]

GREATEST, LEAST 첨보네요 오오오

궁금증 해결해주셔서 감사합니다.

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