SQL - Gesamtzeit ermitteln bei überlappenden Zeitnagben

Hallo, ich hätte da eine SQL Frage:

Ich habe Zeiten, die sich überschneiden. Z.B.
1 Datensatz mit 10-12 Uhr
1 Datensatz mit 11-13 Uhr
Die Gesamtzeit ist also 10-13 Uhr; diese Zeit möchte ich ermitteln.
Also geflattet, nicht nur die tatsächlich überlappende Zeit.

Wie kann man sowas im SQL realisieren?
Bin gespannt auf die Rückmeldungen

Du könntest zunächst mal verraten, wie die Records tatsächlich beschaffen sind (Felder/Typen), und wie die Abfrage aussieht, mit der Du die Datensätze auswählst.
Da wird ja wohl nicht der String „10-12 Uhr“ drinstehen, oder?

Hallo,

schau dir mal als Idee das an:

SELECT Min(anfang) AS anf, Max(ende) AS end, [end]-[anf] AS diff
FROM datentabelle
GROUP BY datentabelle.[summenKennzeichen]

Ansonsten braucht man wie schon geschrieben mehr Input. und natürlich muss man noch schauen, dass alle Felder die richtigen Typen haben, wie auch schon erwähnt.

fg

Dirk:P

Hallo und vielen Dank für die Antworten,
vielleicht erkläre ich den Sachverhalt etwas mehr im Detail damit es eindeutig wird:

Angenommen ich habe drei Mitarbeiter, MA1, MA2 und MA3 an einem Arbeitsplatz A1

MA1 meldet sich um 13.00 Uhr auf dem Arbeitsplatz A1 an und meldet sich um 14.00 Uhr ab.
MA2 meldet sich um 13.15 Uhr auf dem Arbeitsplatz A1 an und meldet sich um 13.45 Uhr ab.
MA 3 meldet sich um 12.45 Uhr auf dem Arbeitsplatz A1 an und meldet sich um 13.45 Uhr ab.

Die Werte werden in der Datenbank in Feldern mit Datum/Uhrzeit-Angabe abgelegt.

Ich möchte nun eine Abfrage erstellen, die mir ausspuckt, wie lange Arbeitsplatz A1 insgesamt belegt war.
D.h. die drei Datensätze der Mitarbeiter müssen untereinander verglichen werden und die früheste Anmeldung bzw. die späteste Abmeldung als Start bzw. Endzeit definiert werden

In unserem Fall war A1 also belegt von 12.45 - 14.00 Uhr (75min)
Dieses Ergbnis möchte ich ermitteln.
Haben schon viel recherchiert aber bislang keine Lösung gefunden, wie wir das direkt über den Abfragebefehl ermitteln können.
Vielen Dank für eure Vorschläge

Hallo,

haben denn die Vorschläge geholfen?

Ansonsten bitte mal einen Datensatz nebst Spaltenköpfen (ggfs. nur die relevanten Spalten) posten. Und, was ausgewertet werden soll. Hört sich an nach Tag und Arbeitsplatz…

fg

Dirk_P

Wie Dirk schon gesagt hat:

SELECT Arbeitsplatz, DATEDIFF (hour, MIN(Anmeldung), MAX(Abmeldung)) AS Dauer
GROUP BY Arbeitsplatz, DATEPART(day, Anmeldung)

Hallo,
danke für die Idee,
werde mir das Anfang sofort Anfang nächster Woche anschauen. Bin bis dahin noch unterwegs;
ich gebe Rückmeldung ob es geklappt hat, aber der Befehl schaut schonmal gut aus.