Letzten Abschnitt (von zusammenhängenden)
-
Hoppla, Angabe genauer lesen hilft.
Sorry, mein Fehler.
-
@nman:
Das würde mir ja aber nicht das letzte zusammenhängende "bis" anzeigen.
sondern nur das "bis" von dem einen überlappenden abschnitt, oder nicht?jenz
-
Wie soll der Wert 2010-03-31 ermittelt werden. Er befindet sich doch gar nicht in deinem Beipiel?
-
jenz schrieb:
@nman:
Das würde mir ja aber nicht das letzte zusammenhängende "bis" anzeigen.
sondern nur das "bis" von dem einen überlappenden abschnitt, oder nicht?Ja, ich hatte übersehen, wie Du die Daten vorliegen hast.
Ich würde wittes Vorschlag mit meinem kombinieren und zunächst mal sowas als View machen:
select id, d1.start_date, max(d1.end_date) from dateintervaltest d1 left join dateintervaltest d2 on (d1.id=d2.id and d2.start_date=d1.end_date+1) group by d1.start_date;
Das spuckt Dir dann zusammenhängende lange Intervalle aus, also eben zB.
1 2010-01-01 2010-02-28 1 2010-04-01 2010-04-30
Darauf kannst Du dann sowas anwenden:
select end_date from deine_view_von_oben where (DATE '2010-01-15', DATE '2010-01-15') overlaps (start_date, end_date) and id=1;
-
jenz schrieb:
und es kann auch so aussehen:
[…] 1 2010-03-01 2010-01-31 […]
Hm? Hast Du Dich gerade vertippt, oder meinst Du, dass Start -und Anfangsdatum vertauscht sein können?
-
huch, ja vertippt, habe es korrigiert
und bei drei (und mehr) abschnitten funktioniert die view ja wieder nicht, nicht wahr?
-
Das ist korrekt.
Aber wenn die Line Items irgendwie in Gruppen zusammenhängen, wirst Du nicht darum herumkommen, das über kurz oder lang auch entsprechend zu modellieren.
Das heißt, dass Du wohl irgendwelche Abfragen drüberjagen müssen wirst, die irgendwoanders Projekte anlegen und die vorliegenden Zeitabschnitte dann den Projekten zuweisen, sodass Du alle Zeitabschnitte, die zu einem Projekt gehören, leicht per Gruppierung nach Projekt erfassen kannst.
-
ja, mit vorher "drübergehen" sehe ich auch möglichkeiten.
aber genau das wollte ich, wenn möglich vermeiden...
-
jenz schrieb:
aber genau das wollte ich, wenn möglich vermeiden...
Wird nicht vernünftig hinhauen. Du hast Informationen nicht mitmodelliert, die Du brauchst. Das musst Du jetzt eben korrigieren.
-
schade, aber genau deshalb frage ich ja, ob jemand noch eine andere möglichkeit sieht.
ich sehe sie nämlich auch nicht.