Zusammenhängende Zeiträume ermitteln

28/08/2007 - 14:17 von Thomas Schremser | Report spam
Hallo allerseits!

Ich habe auf einem SQL-Server 2005 eine Tabelle, die Personen Organisationen
zuordnet. Diese Zuordnung hat ein Von- und Bis-Datum, wobei das Bis-Datum
NULL sein kann. Die durch Von und Bis angegebenen Zeitràume müssen für die
Kombination aus Person und Organisation nicht unbedingt zusammenhàngend sein
und können sich auch überlappen. Die Daten können z.B. so aussehen:


PersonID OrgID Von Bis <weitere Felder>
1 1 01.01.2007 31.03.2007
1 1 01.04.2007 NULL
1 2 01.03.2007 NULL
2 3 01.01.2007 31.03.2007
2 3 01.06.2007 NULL
3 4 01.01.2007 31.07.2007
3 4 01.05.2007 NULL
4 5 01.01.2007 31.07.2007
4 5 01.05.2007 30.06.2007


Nun möchte ich für die Personen alle zusammenhàngenden Zeitràume die sie
einer Organisation zugeordnet war, ermitteln. Das Ergebnis mit obigen
Beispieldaten wàre dann:


PersonID OrgID Von Bis
1 1 01.01.2007 NULL
1 2 01.03.2007 NULL
2 3 01.01.2007 31.03.2007
2 3 01.06.2007 NULL
3 4 01.01.2007 NULL
4 5 01.01.2007 31.07.2007


Hat jemand eine Idee, wie man das - möglichst ohne Cursor - lösen kann?

TIA

Grüße
Thomas

Any problem in computer science can be solved with another layer
of indirection. But that usually will create another problem.
David Wheeler
 

Lesen sie die antworten

#1 Frank Kalis
28/08/2007 - 15:46 | Warnen spam
"Thomas Schremser" wrote:

Ich habe auf einem SQL-Server 2005 eine Tabelle, die Personen Organisationen
zuordnet. Diese Zuordnung hat ein Von- und Bis-Datum, wobei das Bis-Datum
NULL sein kann. Die durch Von und Bis angegebenen Zeitràume müssen für die
Kombination aus Person und Organisation nicht unbedingt zusammenhàngend sein
und können sich auch überlappen. Die Daten können z.B. so aussehen:


PersonID OrgID Von Bis <weitere Felder>
1 1 01.01.2007 31.03.2007
1 1 01.04.2007 NULL
1 2 01.03.2007 NULL
2 3 01.01.2007 31.03.2007
2 3 01.06.2007 NULL
3 4 01.01.2007 31.07.2007
3 4 01.05.2007 NULL
4 5 01.01.2007 31.07.2007
4 5 01.05.2007 30.06.2007


Nun möchte ich für die Personen alle zusammenhàngenden Zeitràume die sie
einer Organisation zugeordnet war, ermitteln. Das Ergebnis mit obigen
Beispieldaten wàre dann:


PersonID OrgID Von Bis
1 1 01.01.2007 NULL
1 2 01.03.2007 NULL
2 3 01.01.2007 31.03.2007
2 3 01.06.2007 NULL
3 4 01.01.2007 NULL
4 5 01.01.2007 31.07.2007





Kann es sein, daß Du einen Copy und Paste Fehler im gewünschten Resultset
hast?

PersonID OrgID Von Bis
1 1 01.01.2007 NULL
1 2 01.03.2007 NULL
2 3 01.01.2007 31.03.2007 <-- Soll diese Zeile hier
tatsàchlich enthalten sein?
2 3 01.06.2007 NULL
3 4 01.01.2007 NULL
4 5 01.01.2007 31.07.2007

Ausserdem ist mir nicht ganz klar wie das

4 5 01.01.2007 31.07.2007
4 5 01.05.2007 30.06.2007



passieren kann. Wie muß das interpretiert werden? PersonID 4 arbeitet vom
Januar bis Juli für OrgID und dann noch einmal von Mai bis Juni? Kannst Du
das einmal erklàren?
Frank Kalis
Microsoft SQL Server MVP
Webmaster: http://www.insidesql.de

Ähnliche fragen