UseCase: um Fehler einfacher zu identifizieren, möchte ich mir im Object Mitarbeiter - Stempelzeiten (TM_EmployeeTimeRecordings) zu einer erfassten Stempelung den Typ der letzten Stempelungen anzeigen lassen; entweder in derselben Stundenart oder Stundenartübergreifend. Dann könnte mit einer bedingten Formatierung alle inkorrekten Zeilen hervorgehoben werden (im Gegensatz zu nur der ersten fehlerhaften Zeile, die mit dem Bool-Feld "Error" ersichtlich ist).
Per SQL lässt sich das recht einfach realisieren, zum Beispiel mit einer Fensterfunktion:
SELECT tetr.guid,
tetr.[DateTime] ,
LEAD(tetr.[Type]) OVER (
PARTITION BY Employee --, TypeOfHour
ORDER BY DateTime DESC) as LastType,
be.FirstName, be.LastName ,
ttrt.Name ,
ttoh.Name
FROM TM_EmployeeTimeRecordings tetr
INNER JOIN BAS_Employees be
ON be.GUID = tetr.Employee
INNER JOIN TM_TimeRecordingsTypes ttrt
ON ttrt.GUID = tetr.[Type]
INNER JOIN TM_TypeOfHours ttoh
ON ttoh.GUID = tetr.TypeOfHour
ORDER BY [DateTime] DESC
Eine andere Möglichkeit (in SQL), wäre das mit einem
WITH C AS (
SELECT tetr.GUID GUID,
LEAD(tetr.[Type]) OVER (
PARTITION BY Employee --, TypeOfHour
ORDER BY DateTime DESC) as LastType
FROM TM_EmployeeTimeRecordings tetr )
SELECT C.LastType
FROM C
WHERE C.GUID = @@ObjectName@@.GUID
Oder als Subquery
SELECT C.LastType
FROM (SELECT tetr.GUID as GUID,
LEAD(tetr.[Type]) OVER (
PARTITION BY Employee
ORDER BY DateTime DESC) as LastType
FROM TM_EmployeeTimeRecordings tetr
) as C
WHERE C.GUID = @@ObjectName@@.GUID
Keiner der Varianten liefert aber das gewünschte Ergebnis als Munixo SQL Text mit verschiedenen Fehlermeldungen.
Gibt es eine Möglichkeit meinen "Letzten Typ" UseCase zu implementieren?