0
날짜가 날짜 범위 내에있는 경우 테이블에서 데이터를 제외하려고합니다. 이 하나의 날짜 인 경우 다음은 간단한 것이다 :여러 날짜 범위 필터링 - SQL
START_DATE END_DATE VALUE_NAME
06-NOV-17 13:16:00 06-NOV-17 13:17:00 NAMEINQUESTION
06-NOV-17 16:34:00 17-NOV-17 16:13:00 NAMEINQUESTION
13-NOV-17 18:05:00 13-NOV-17 18:10:00 NAMEINQUESTION
13-NOV-17 20:02:00 13-NOV-17 20:03:00 NAMEINQUESTION
13-NOV-17 20:05:00 13-NOV-17 20:20:00 NAMEINQUESTION
15-NOV-17 15:14:00 15-NOV-17 15:18:00 NAMEINQUESTION
:
SELECT * FROM XYZ WHERE XYZ.DATE NOT BETWEEN DATE1 AND DATE2;
그러나이 특정 요구 사항에 대해, 내가 별도의 테이블에 저장 비교할하고자하는 많은 날짜 (EXCLUDE_THESE_DATES)가
나는 그 값들 안에있는 모든 값들을 (아래) 얻을 수 있었지만, 내가 진정으로 찾고있는 것을 얻지는 못했다.
SELECT
FLD.VALUE, FLD.FILTERDATE, ETED.START_DATE, ETED.END_DATE
FROM
FULL_LIST_OF_DATES FLD,
EXCLUDE_THESE_DATES ETD
WHERE FLD.VALUE_NAME = ETD.VALUE_NAME
AND FLD.VALUE_TYPE_ID = 1007
AND FLD.FILTERDATE BETWEEN '01-OCT-17 00:00:00' AND '01-APR-18
00:00:00'
AND (FLD.FILTERDATE >= ETED.START_DATE
AND FLD.FILTERDATE <= ETED.END_DATE)
AND FLD.VALUE_NAME = 'NAMEINQUESTION'
도움이 필요하십니까?
편집 : 피드백을 기반으로합니다. 16:34:51은 06-NOV-17 16:34:00에서 17-NOV-17 16:13:00에 있기 때문에 나타나지 않아야합니다.
VALUE FILTERDATE START_DATE END_DATE
480.703461 06-NOV-17 16:34:51 28-NOV-17 13:26:00 29-NOV-17 23:36:00
480.703461 06-NOV-17 16:34:51 13-NOV-17 18:05:00 13-NOV-17 18:10:00
480.703461 06-NOV-17 16:34:51 06-NOV-17 13:16:00 06-NOV-17 13:17:00
480.703461 06-NOV-17 16:34:51 13-NOV-17 20:05:00 13-NOV-17 20:20:00
480.703461 06-NOV-17 16:34:51 15-NOV-17 15:14:00 15-NOV-17 15:18:00
480.703461 06-NOV-17 16:34:51 28-NOV-17 13:10:00 28-NOV-17 13:13:00
480.703461 06-NOV-17 16:34:51 13-NOV-17 20:02:00 13-NOV-17 20:03:00
483.04837 06-NOV-17 16:35:19 28-NOV-17 13:26:00 29-NOV-17 23:36:00
483.04837 06-NOV-17 16:35:19 13-NOV-17 18:05:00 13-NOV-17 18:10:00
483.04837 06-NOV-17 16:35:19 06-NOV-17 13:16:00 06-NOV-17 13:17:00
483.04837 06-NOV-17 16:35:19 13-NOV-17 20:05:00 13-NOV-17 20:20:00
483.04837 06-NOV-17 16:35:19 15-NOV-17 15:14:00 15-NOV-17 15:18:00
483.04837 06-NOV-17 16:35:19 28-NOV-17 13:10:00 28-NOV-17 13:13:00
네 오래된 습관은 쉽게 사라지지보다는
JOIN ..ON
구문을 사용합니다. 나는 그것이 내가 게시하기 전에했던 것과 그것이 내가 생각했던 결과를주지 않았지만 다시 시도 할 것이라고 생각했다. :) – GregN@GregN : 'FULL_LIST_OF_DATES'에있는 레코드를 모른 채 쿼리를 작성하거나 테스트하는 것은 어렵습니다. 위에서 언급 한 'OR'조건을 사용하여 여러 가지 방법으로 시도하십시오. –
수정 사항이 추가되었습니다. 그것은 조건을 만족시키지 못한 기록을 끌어 냈습니다. – GregN