2016-08-15 10 views
0

日付範囲(From列とTo列)を返す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 
関連する問題