2016-08-15 3 views
0

날짜 범위 (시작 및 끝 열)를 반환하는 select 문이 있으며 모든 범위에서 공통적 인 모든 날짜 목록을 생성하려고합니다. 예를 들어날짜 범위에서 공통 날짜 선택

:

FROM     TO 
01-12-2016   11-12-2016 
05-12-2016   17-12-2016 
07-12-2016   20-12-2016 

가 지금은 위의 모든 범위에서 발생한 모든 날짜를 싶어. 이 경우 다음 날짜를 검색해야합니다.

07-12-2016 
08-12-2016 
09-12-2016 
10-12-2016 
11-12-2016 

이 모든 날짜는 반환 된 모든 결과에서 공통적이기 때문에. 이것은 SQL (또는 PL/SQL)에서 가능합니까?

답변

1

샘플 데이터 :

CREATE TABLE tt1 (
    "FROM" date, "TO" date 
); 

INSERT INTO tt1 VALUES(date '2016-12-01', date '2016-12-11'); 
INSERT INTO tt1 VALUES(date '2016-12-05', date '2016-12-17'); 
INSERT INTO tt1 VALUES(date '2016-12-07', date '2016-12-20'); 
COMMIT; 

쿼리 :

SELECT d1 + level - 1 As da_te 
FROM (
     SELECT max("FROM") as d1, 
      min("TO") as d2 
     FROM tt1 
) 
CONNECT BY LEVEL <= d2 - d1 + 1 

결과 :

DA_TE  
---------- 
2016/12/07 
2016/12/08 
2016/12/09 
2016/12/10 
2016/12/11 
관련 문제