Check IN to Pivot in SQL Weekly min Sun+Mun

PHOTO EMBED

Sun Aug 27 2023 19:36:47 GMT+0000 (Coordinated Universal Time)

Saved by @Taimoor

SELECT
    `employee`,
    `employee_name`,
    DATE_FORMAT(MIN(`source`.`time`), '%d-%m-%Y') AS `From Date`,
    DATE_FORMAT(MAX(`source`.`time`), '%d-%m-%Y') AS `To Date`,
    -- Day 1 (Monday)
    MAX(CASE WHEN DAYOFWEEK(`time`) = 2 THEN `min` END) AS Monday,
    -- Day 2 (Tuesday)
    MAX(CASE WHEN DAYOFWEEK(`time`) = 3 THEN `min` END) AS Tuesday,
    -- Day 3 (Wednesday)
    MAX(CASE WHEN DAYOFWEEK(`time`) = 4 THEN `min` END) AS Wednesday,
    -- Day 4 (Thursday)
    MAX(CASE WHEN DAYOFWEEK(`time`) = 5 THEN `min` END) AS Thursday,
    -- Day 5 (Friday)
    MAX(CASE WHEN DAYOFWEEK(`time`) = 6 THEN `min` END) AS Friday,
    -- Day 6 (Saturday)
    MAX(CASE WHEN DAYOFWEEK(`time`) = 7 THEN `min` END) AS Saturday,
    -- Day 7 (Sunday)
    MAX(CASE WHEN DAYOFWEEK(`time`) = 1 THEN `min` END) AS Sunday
FROM (
    SELECT
        `employee`,
        `employee_name`,
        DATE(`time`) AS `time`,
        DAY(`time`) AS `day`,
        TIME_FORMAT(MIN(TIME(`time`)), '%H:%i') AS `min`
    FROM `tabEmployee Checkin`
    WHERE true
        [[AND `time` >= {{From_date}}]]
        [[AND `time` <= DATE_ADD({{To_date}}, INTERVAL 1 DAY)]]
    GROUP BY
        `employee`,
        `employee_name`,
        DATE(`time`)
) AS source
GROUP BY
    `employee`,
    `employee_name`
ORDER BY
    `employee` ASC,
    `employee_name` ASC;
content_copyCOPY