Einzelnen Beitrag anzeigen

Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#1

SQL - Abfrage nach verschachtelten Kriterien

  Alt 20. Okt 2016, 18:05
Datenbank: MSSQL • Version: 2012 oder höher • Zugriff über: SQL
Ich beiße mir gerade die 3. Zähne an einer Abfrage aus. Gegeben sei folgende Tabellenstruktur:
FeldTypNULL
IDINTNOT NULL
BenutzerIDINTNOT NULL
StatusINTNOT NULL
AnfangDateTimeNOT NULL
EndeDateTimeNULL
SerieINTNULL
Daraus muss ich nun maximal 1 Datensatz je BenutzerID ermitteln, und zwar nach folgender Wichtung:
- Existiert ein Datensatz mit einem NULL-Ende, dann den
- Existiert ein Datensatz, der Teil einer Serie ist (Feld Serie ist also nicht NULL), dann soll geprüft werden, ob sich der minimale Anfang in der Vergangenheit und das maximale Ende der gesamten Serie (also aller Datensätze mit demselben Wert im Feld Serie) in der Zukunft befinden, der jetzige Zeitpunkt also innerhalb des Gesamtzeitraums liegt. Bei einem Treffer sollen im Ergebnis dann Minimalanfang und Maximalende samt Status (der Status innerhalb einer Serie ist immer derselbe) zurückgegeben werden.
- Existieren mehrere solcher Serien, dann soll die Serie mit dem kleinsten in der Zukunft liegenden Maximalende genommen werden.

Ich denke, dass das mit verschachtelten Subqueries zu machen sein müsste, bekomme aber auch nach Stunden nicht das richtige Ergebnis. Entweder ist das wirklich so kompliziert, oder ich habe mich auf einem Irrweg festgerannt und finde da nicht wieder runter.

Hat jemand eine Idee, wie man das umsetzen könnte?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH (20. Okt 2016 um 18:19 Uhr) Grund: Hervorhebung
  Mit Zitat antworten Zitat