Untitled
unknown
plain_text
2 years ago
1.4 kB
8
Indexable
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;
Editor is loading...
Leave a Comment