我有一个select语句,它返回日期范围(From和To列),我想生成一个在所有范围内共同的所有日期的列表。
例如:
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)吗?
答案 0 :(得分: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