날짜 조회 질문 드립니다. 0 1 888

by xcrew [SQL Query] [2021.03.24 18:17:39]


안녕하세요.

시작일과 종료일 날짜 조회 관련해서 문의 드리려 합니다.

start_date, end_date, real_end_date 필드 다 bpchar형 이구요

설정된 기간 내에 기간이 하루라도 속하면 리스트에 출력 되도록 하고 싶습니다.

start_date end_date real_end_date
20210301 20210302  
20210303 20210530  
20210306 20210621 20210331
20210308 20210630  

SELECT
*
FROM main a
WHERE 1=1
AND a.start_date >= '20210301' 
AND a.end_date <= '20210331'

위 쿼리로는 현재 한건이 나오지만

제가 원하는건 하루라도 포함이 되어있는건은 다 나오게 하고 싶습니다.

<원하는결과>

20210301 20210302  
20210303 20210530  
20210306 20210621 20210331
20210308 20210630  

그리고 조회 종료일 기준을 real_end_date필드에

값이 있으면 real_end_date로

값이 없으면 end_date로 하고 싶은데요.....

도움 부탁드립니다.

by 마농 [2021.03.25 02:23:25]
WITH main AS
(
SELECT '20210301' start_date, '20210302' end_date, null real_end_date FROM dual
UNION ALL SELECT '20210303', '20210530', null       FROM dual
UNION ALL SELECT '20210306', '20210621', '20210331' FROM dual
UNION ALL SELECT '20210308', '20210630', null       FROM dual
)
SELECT *
  FROM main
 WHERE 1=1
   AND start_date <= '20210331'
   AND NVL(real_end_date, end_date) >= '20210301'
;
-- 시작, 종료 교차 비교
-- http://gurubee.net/article/45391

 

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