这不是一个oracle特定的答案,你需要自己将它翻译成oracle。
创建间隔表,包含所有整数从0到999之间的事情是这样的:
CREATE TABLE intervals (days int);
INSERT INTO intervals (days) VALUES (0), (1);
DECLARE @rc int;
SELECT @rc = 2;
WHILE (SELECT Count(*) FROM intervals) < 1000 BEGIN
INSERT INTO intervals (days) SELECT days + @rc FROM intervals WHERE days + @rc < 1000;
SELECT @rc = @rc * 2
END;
然后在范围内的所有日期,可以通过添加intervals.days一个你的第一个日期标识得到,第一个日期+间隔时间为< =结束日期,结果日期是新的。通过将间隔交叉连接到自己的表格来完成此操作。喜欢的东西(它会在SQL,但同样你需要翻译):
SELECT DateAdd(a.date, d, i.days)
FROM (select min(date) from table_A) a, intervals I
WHERE DateAdd(a.date, d, i.days) < (select max(date) from table_A)
AND NOT EXISTS (select 1 from table_A aa where aa.date = DateAdd(a.date, d, i.days))
希望这给你一个起点
有一个很好的机会,已经有堆栈溢出的答案。当然,必须有办法加入date * x *和* y *之间的日历表并将您的结果加入到该日历中?虽然我找不到它。希望有人更熟悉Oracle标签可以! :) –
只是为了澄清。这些是表格而不是分组/聚合查询的结果? –
你的要求是什么? +你尝试过什么?你是否真的写了一些查询或试图这样做来实现你所寻找的结果?如果是这样,请分享一下。此外,如果可能的话,请解释用普通英语构造数据输出所需的逻辑(如果您愿意,可以使用+技术术语)。 – Annjawn