[FIXED] Suchen Sie die „aktive“ Zeile basierend auf dem aktuellen Datum aus den Datums-Gültigkeitszeilen

Ausgabe

Ich habe eine Tabelle, in der Mitarbeiterinformationen gespeichert sind. Es können mehrere datumswirksame Datensätze für einen einzelnen Mitarbeiter vorhanden sein, wenn sich seine Arbeitsbedingungen ändern. Zum Beispiel von Vollzeit auf Teilzeit wechseln. Jeder Datensatz hat ein Gültig-ab-Datum, aber kein Gültig-bis-Datum. Einige Aufzeichnungen können in die Zukunft datierte Aufzeichnungen sein, die auf eine geplante Änderung der Umstände hinweisen.

Ich möchte den Datensatz identifizieren, der zu einem bestimmten Zeitpunkt auf der Grundlage des aktuellen Datums “aktiv” ist. Wenn wir also in meinem Beispiel unten davon ausgehen, dass das aktuelle Datum der 16. September 2022 ist, möchte ich die dritte Zeile so zurückgeben, wie sie nach dem 31. August 2022 und vor dem 1. Januar 2023 liegt.

+-------------+----------------+-------------+---- ----+
| Mitarbeiter_ID | Wirksamkeitsdatum | Arbeitsstatus | Job_ID |
+-------------+----------------+-------------+---- ----+
| 1 | 01.01.2021 | FT | Ein |
| 1 | 2021-04-22 | PT | Ein |
| 1 | 2022-08-31 | PT | B |
| 1 | 01.01.2023 | FT | B |
+-------------+----------------+-------------+---- ----+

Lösung

Angenommen, Sie möchten die aktuelle Position für alle Mitarbeiter.

Select top 1 with ties * 
 From  YourTable
 Where Effective_Date<=getdate()
 Order by row_number() over (partition by Employee_ID order by Effective_Date desc)


Beantwortet von –
John Cappelletti


Antwort geprüft von –
Pedro (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like