這不是一個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