Dies ist keine Oracle-spezifische Antwort, Sie müssen es in Orakel selbst übersetzen.
Eine Intervalle Tabelle, alle ganzen Zahlen von 0 bis 999. So etwas wie diese enthält:
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;
Dann werden alle Termine im Bereich kann durch Zugabe von intervals.days zu dem ersten Tag identifiziert werden, Sie haben bekommen, wo das erste Datum + intervals.days < = das Enddatum ist, und das resultierende Datum ist neu. Führen Sie dies durch, indem Sie Intervalle mit Ihrem eigenen Tisch verbinden. So etwas wie (es wäre in SQL sein, aber auch hier werden Sie übersetzen müssen):
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))
Hoffnung, das gibt Ihnen einen Ausgangspunkt
Es gibt eine gute Chance gibt es bereits eine Antwort auf Stack-Überlauf. Sicherlich muss es eine Möglichkeit geben, sich zwischen date * x * und * y * zu einer Kalender-Tabelle zu verbinden und Ihre Ergebnisse damit zu verbinden? Ich konnte es jedoch nicht finden. Hoffentlich kann jemand, der mehr Wissen im Oracle-Tag haben kann! :) –
Nur um zu klären. Das sind Tabellen und nicht das Ergebnis einer Group-by/Aggregate-Abfrage? –
Was ist Ihre Anforderung? + Was hast du probiert? Haben Sie tatsächlich eine Anfrage geschrieben oder versucht, das gewünschte Ergebnis zu erzielen? Wenn ja, bitte teilen Sie das. Wenn möglich, erläutern Sie bitte auch die Logik, die erforderlich ist, um die Datenausgabe in einfacher Sprache zu strukturieren (+ technische Jargons, wenn Sie möchten). – Annjawn