Mam problem aktualnie mam zapytanie SQL:
SELECT
ROW_NUMBER() OVER (ORDER BY pac.Create_DT) Lp,
pac.UserName,
pac.StartDT,
pac.EndDT,
pac.OperationTypeName,
pac.Qty,
datediff(MINUTE, pac.StartDT,pac.EndDT) as 'CZAS',
pac.ControlDataTypeName,
pac.ControlDataRefRemarks,
pac.Points
FROM rep.Productivity(NOLOCK) pac
JOIN dbo.Users(NOLOCK) u
ON u.IdUser = pac.UserId
where pac.OperationTypeName like '%Kompletacja%' and CAST(pac.StartDT as date) = CAST(GETDATE() as date)
ORDER BY pac.Create_DT
Które zwraca mi Czas start i czas stop, i w kolumnie 'CZAS' wyliczam różnice co daje mi czas ile trwała operacja.
Ale tu pojawia się problem bo pracownicy idąc na przerwę nie mogą zawiesić operacji i czas przerwy również się nalicza:
StartDT EndDT OperationTypeName Qty CZAS
2024-10-03 02:00:18.500 2024-10-03 02:49:25.980 Kompletacja export 8.00 49 Przerwa - 20 minut
2024-10-03 02:00:18.500 2024-10-03 02:49:25.980 Kompletacja export 8.00 49 Przerwa - 20 minut
2024-10-03 02:36:24.913 2024-10-03 02:52:56.787 Kompletacja export 3.00 16 OK
2024-10-03 02:40:51.010 2024-10-03 02:54:24.010 Kompletacja export 3.00 14 OK
2024-10-03 02:42:49.137 2024-10-03 03:04:40.857 Kompletacja export 3.00 22 OK

Tak jak widać dwa pierwsze wpisy powinny zostać skorygowane o czas przerwy czyli od 02:00:00 do 02:20:00 jest przerwa. Później 10:00:00 do 10:20:00 i 18:00:00 do 18:20:00
Więc gdy wpis zostanie zarejestrowany w czasie przerwy powinien zostać skorygowane o czas przerwy.
Macie jakieś pomysły jak to zrobić w prosty sposób?