Untitled

 avatar
unknown
plain_text
a year ago
1.4 kB
5
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;
Leave a Comment