Überlappende Datumsintervalle zusammenführen (verbesserte Lösung)
Überlappende Datumsintervalle zusammenführen ist eine häufige Aufgabe in der Datenverarbeitung. Obwohl die bereitgestellte Lösung einfach ist, ist sie möglicherweise nicht die effizienteste oder umfassendste. Hier ist eine verbesserte Lösung, die potenzielle Grenzfälle berücksichtigt:
-- Retrieve the overlapping ranges SELECT s1.StartDate, MIN(t1.EndDate) AS EndDate FROM @T s1 INNER JOIN @T t1 ON s1.StartDate <= t1.EndDate AND NOT EXISTS(SELECT * FROM @T t2 WHERE t1.EndDate >= t2.StartDate AND t1.EndDate < t2.EndDate) GROUP BY s1.StartDate -- Exclude subintervals EXCEPT -- Find overlapping intervals with extended end dates SELECT s1.StartDate, MAX(t1.EndDate) AS EndDate FROM @T s1 INNER JOIN @T t1 ON s1.StartDate > t1.StartDate AND s1.StartDate <= t1.EndDate GROUP BY s1.StartDate
Diese Abfrage berücksichtigt Fälle, in denen die Überlappungen über den ursprünglichen Bereich hinausgehen können. Die EXCEPT-Klausel filtert diese erweiterten Bereiche heraus, was zu einem genaueren und vollständigeren zusammengeführten Intervallsatz führt.
Ausgabe:
StartDate | EndDate 2010-01-01 | 2010-06-13 2010-06-15 | 2010-08-16 2010-11-01 | 2010-12-31
Das obige ist der detaillierte Inhalt vonWie lassen sich überlappende Datumsintervalle effizient zusammenführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!