Check-in/Out Monthly 1

PHOTO EMBED

Mon Dec 09 2024 09:44:07 GMT+0000 (Coordinated Universal Time)

Saved by @Taimoor

SELECT 
    source.employee AS `Employee`,
    source.employee_name AS `Employee Name`,
    TabEmployee.department AS `Department`,
    TabEmployee.designation AS `Designation`,
    TabEmployee.branch AS `Branch`,
    source.From_Date AS `From Date`,
    source.To_Date AS `To Date`,
    source.Day_1_Min AS `Day 1 Min`,
    source.Day_1_Max AS `Day 1 Max`,
    source.Day_2_Min AS `Day 2 Min`,
    source.Day_2_Max AS `Day 2 Max`,
    source.Day_3_Min AS `Day 3 Min`,
    source.Day_3_Max AS `Day 3 Max`,
    source.Day_4_Min AS `Day 4 Min`,
    source.Day_4_Max AS `Day 4 Max`,
    source.Day_5_Min AS `Day 5 Min`,
    source.Day_5_Max AS `Day 5 Max`,
    source.Day_6_Min AS `Day 6 Min`,
    source.Day_6_Max AS `Day 6 Max`,
    source.Day_7_Min AS `Day 7 Min`,
    source.Day_7_Max AS `Day 7 Max`,
    source.Day_8_Min AS `Day 8 Min`,
    source.Day_8_Max AS `Day 8 Max`,
    source.Day_9_Min AS `Day 9 Min`,
    source.Day_9_Max AS `Day 9 Max`,
    source.Day_10_Min AS `Day 10 Min`,
    source.Day_10_Max AS `Day 10 Max`,
    source.Day_11_Min AS `Day 11 Min`,
    source.Day_11_Max AS `Day 11 Max`,
    source.Day_12_Min AS `Day 12 Min`,
    source.Day_12_Max AS `Day 12 Max`,
    source.Day_13_Min AS `Day 13 Min`,
    source.Day_13_Max AS `Day 13 Max`,
    source.Day_14_Min AS `Day 14 Min`,
    source.Day_14_Max AS `Day 14 Max`,
    source.Day_15_Min AS `Day 15 Min`,
    source.Day_15_Max AS `Day 15 Max`,
    source.Day_16_Min AS `Day 16 Min`,
    source.Day_16_Max AS `Day 16 Max`,
    source.Day_17_Min AS `Day 17 Min`,
    source.Day_17_Max AS `Day 17 Max`,
    source.Day_18_Min AS `Day 18 Min`,
    source.Day_18_Max AS `Day 18 Max`,
    source.Day_19_Min AS `Day 19 Min`,
    source.Day_19_Max AS `Day 19 Max`,
    source.Day_20_Min AS `Day 20 Min`,
    source.Day_20_Max AS `Day 20 Max`,
    source.Day_21_Min AS `Day 21 Min`,
    source.Day_21_Max AS `Day 21 Max`,
    source.Day_22_Min AS `Day 22 Min`,
    source.Day_22_Max AS `Day 22 Max`,
    source.Day_23_Min AS `Day 23 Min`,
    source.Day_23_Max AS `Day 23 Max`,
    source.Day_24_Min AS `Day 24 Min`,
    source.Day_24_Max AS `Day 24 Max`,
    source.Day_25_Min AS `Day 25 Min`,
    source.Day_25_Max AS `Day 25 Max`,
    source.Day_26_Min AS `Day 26 Min`,
    source.Day_26_Max AS `Day 26 Max`,
    source.Day_27_Min AS `Day 27 Min`,
    source.Day_27_Max AS `Day 27 Max`,
    source.Day_28_Min AS `Day 28 Min`,
    source.Day_28_Max AS `Day 28 Max`,
    source.Day_29_Min AS `Day 29 Min`,
    source.Day_29_Max AS `Day 29 Max`,
    source.Day_30_Min AS `Day 30 Min`,
    source.Day_30_Max AS `Day 30 Max`,
    source.Day_31_Min AS `Day 31 Min`,
    source.Day_31_Max AS `Day 31 Max`
FROM 
    (SELECT
        employee,
        employee_name,
        DATE_FORMAT(MIN(time), '%d-%m-%Y') AS `From_Date`,
        DATE_FORMAT(MAX(time), '%d-%m-%Y') AS `To_Date`,
        MAX(CASE WHEN DAY(time) = 1 THEN min_time END) AS `Day_1_Min`,
        MAX(CASE WHEN DAY(time) = 1 THEN max_time END) AS `Day_1_Max`,
        MAX(CASE WHEN DAY(time) = 2 THEN min_time END) AS `Day_2_Min`,
        MAX(CASE WHEN DAY(time) = 2 THEN max_time END) AS `Day_2_Max`,
        MAX(CASE WHEN DAY(time) = 3 THEN min_time END) AS `Day_3_Min`,
        MAX(CASE WHEN DAY(time) = 3 THEN max_time END) AS `Day_3_Max`,
        MAX(CASE WHEN DAY(time) = 4 THEN min_time END) AS `Day_4_Min`,
        MAX(CASE WHEN DAY(time) = 4 THEN max_time END) AS `Day_4_Max`,
        MAX(CASE WHEN DAY(time) = 5 THEN min_time END) AS `Day_5_Min`,
        MAX(CASE WHEN DAY(time) = 5 THEN max_time END) AS `Day_5_Max`,
        MAX(CASE WHEN DAY(time) = 6 THEN min_time END) AS `Day_6_Min`,
        MAX(CASE WHEN DAY(time) = 6 THEN max_time END) AS `Day_6_Max`,
        MAX(CASE WHEN DAY(time) = 7 THEN min_time END) AS `Day_7_Min`,
        MAX(CASE WHEN DAY(time) = 7 THEN max_time END) AS `Day_7_Max`,
        MAX(CASE WHEN DAY(time) = 8 THEN min_time END) AS `Day_8_Min`,
        MAX(CASE WHEN DAY(time) = 8 THEN max_time END) AS `Day_8_Max`,
        MAX(CASE WHEN DAY(time) = 9 THEN min_time END) AS `Day_9_Min`,
        MAX(CASE WHEN DAY(time) = 9 THEN max_time END) AS `Day_9_Max`,
        MAX(CASE WHEN DAY(time) = 10 THEN min_time END) AS `Day_10_Min`,
        MAX(CASE WHEN DAY(time) = 10 THEN max_time END) AS `Day_10_Max`,
        MAX(CASE WHEN DAY(time) = 11 THEN min_time END) AS `Day_11_Min`,
        MAX(CASE WHEN DAY(time) = 11 THEN max_time END) AS `Day_11_Max`,
        MAX(CASE WHEN DAY(time) = 12 THEN min_time END) AS `Day_12_Min`,
        MAX(CASE WHEN DAY(time) = 12 THEN max_time END) AS `Day_12_Max`,
        MAX(CASE WHEN DAY(time) = 13 THEN min_time END) AS `Day_13_Min`,
        MAX(CASE WHEN DAY(time) = 13 THEN max_time END) AS `Day_13_Max`,
        MAX(CASE WHEN DAY(time) = 14 THEN min_time END) AS `Day_14_Min`,
        MAX(CASE WHEN DAY(time) = 14 THEN max_time END) AS `Day_14_Max`,
        MAX(CASE WHEN DAY(time) = 15 THEN min_time END) AS `Day_15_Min`,
        MAX(CASE WHEN DAY(time) = 15 THEN max_time END) AS `Day_15_Max`,
        MAX(CASE WHEN DAY(time) = 16 THEN min_time END) AS `Day_16_Min`,
        MAX(CASE WHEN DAY(time) = 16 THEN max_time END) AS `Day_16_Max`,
        MAX(CASE WHEN DAY(time) = 17 THEN min_time END) AS `Day_17_Min`,
        MAX(CASE WHEN DAY(time) = 17 THEN max_time END) AS `Day_17_Max`,
        MAX(CASE WHEN DAY(time) = 18 THEN min_time END) AS `Day_18_Min`,
        MAX(CASE WHEN DAY(time) = 18 THEN max_time END) AS `Day_18_Max`,
        MAX(CASE WHEN DAY(time) = 19 THEN min_time END) AS `Day_19_Min`,
        MAX(CASE WHEN DAY(time) = 19 THEN max_time END) AS `Day_19_Max`,
        MAX(CASE WHEN DAY(time) = 20 THEN min_time END) AS `Day_20_Min`,
        MAX(CASE WHEN DAY(time) = 20 THEN max_time END) AS `Day_20_Max`,
        MAX(CASE WHEN DAY(time) = 21 THEN min_time END) AS `Day_21_Min`,
        MAX(CASE WHEN DAY(time) = 21 THEN max_time END) AS `Day_21_Max`,
        MAX(CASE WHEN DAY(time) = 22 THEN min_time END) AS `Day_22_Min`,
        MAX(CASE WHEN DAY(time) = 22 THEN max_time END) AS `Day_22_Max`,
        MAX(CASE WHEN DAY(time) = 23 THEN min_time END) AS `Day_23_Min`,
        MAX(CASE WHEN DAY(time) = 23 THEN max_time END) AS `Day_23_Max`,
        MAX(CASE WHEN DAY(time) = 24 THEN min_time END) AS `Day_24_Min`,
        MAX(CASE WHEN DAY(time) = 24 THEN max_time END) AS `Day_24_Max`,
        MAX(CASE WHEN DAY(time) = 25 THEN min_time END) AS `Day_25_Min`,
        MAX(CASE WHEN DAY(time) = 25 THEN max_time END) AS `Day_25_Max`,
        MAX(CASE WHEN DAY(time) = 26 THEN min_time END) AS `Day_26_Min`,
        MAX(CASE WHEN DAY(time) = 26 THEN max_time END) AS `Day_26_Max`,
        MAX(CASE WHEN DAY(time) = 27 THEN min_time END) AS `Day_27_Min`,
        MAX(CASE WHEN DAY(time) = 27 THEN max_time END) AS `Day_27_Max`,
        MAX(CASE WHEN DAY(time) = 28 THEN min_time END) AS `Day_28_Min`,
        MAX(CASE WHEN DAY(time) = 28 THEN max_time END) AS `Day_28_Max`,
        MAX(CASE WHEN DAY(time) = 29 THEN min_time END) AS `Day_29_Min`,
        MAX(CASE WHEN DAY(time) = 29 THEN max_time END) AS `Day_29_Max`,
        MAX(CASE WHEN DAY(time) = 30 THEN min_time END) AS `Day_30_Min`,
        MAX(CASE WHEN DAY(time) = 30 THEN max_time END) AS `Day_30_Max`,
        MAX(CASE WHEN DAY(time) = 31 THEN min_time END) AS `Day_31_Min`,
        MAX(CASE WHEN DAY(time) = 31 THEN max_time END) AS `Day_31_Max`
     FROM 
         (SELECT
              employee,
              employee_name,
              DATE(time) AS time,
              TIME_FORMAT(MIN(TIME(time)), '%H:%i') AS min_time,
              TIME_FORMAT(MAX(TIME(time)), '%H:%i') AS max_time
          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 inner_source
     GROUP BY
         employee,
         employee_name
    ) AS source
LEFT JOIN 
    `tabEmployee` TabEmployee 
ON 
    source.employee = TabEmployee.employee
WHERE 
    (TabEmployee.branch = {{Branch}} OR {{Branch}} IS NULL)
LIMIT 1048575;
content_copyCOPY