Untitled
WITH CTE AS ( SELECT P.Name AS Pracownik, E.LoggedOn AS Data, E.SourceID AS Źródło, LAG(E.SourceID) OVER (PARTITION BY P.Name ORDER BY E.LoggedOn) AS PoprzednieŹródło, LAG(E.LoggedOn) OVER (PARTITION BY P.Name ORDER BY E.LoggedOn) AS CzasWejscia FROM sonia.dbo.AccessUserPersons P JOIN sonia.dbo.EventLogEntries E ON E.PersonID = P.ID WHERE E.LoggedOn BETWEEN '2023-12-01 00:00:00.000' AND '2024-01-01 00:00:00.000' AND E.EventCode = 601 AND E.SourceID IN (6, 7) ), CTE_Pracy AS ( SELECT Pracownik, Data, Źródło, CASE WHEN Źródło = 7 AND PoprzednieŹródło = 6 THEN CASE WHEN CONVERT(DATE, CzasWejscia) = CONVERT(DATE, Data) THEN DATEDIFF(SECOND, CzasWejscia, Data) ELSE 0 END ELSE 0 END AS CzasPracySekundy FROM CTE WHERE Źródło = 7 AND PoprzednieŹródło = 6 ) SELECT Pracownik, CAST(SUM(CzasPracySekundy) / 3600 AS VARCHAR) + 'h ' + RIGHT('0' + CAST((SUM(CzasPracySekundy) % 3600) / 60 AS VARCHAR), 2) + 'm ' + RIGHT('0' + CAST(SUM(CzasPracySekundy) % 60 AS VARCHAR), 2) + 's' AS SumaCzasuPracy FROM CTE_Pracy GROUP BY Pracownik ORDER BY Pracownik;
Leave a Comment