Check-in/Out Monthly
Mon Dec 09 2024 10:03:22 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_IN AS `Day 1 IN`, source.Day_1_OUT AS `Day 1 OUT`, source.Day_2_IN AS `Day 2 IN`, source.Day_2_OUT AS `Day 2 OUT`, source.Day_3_IN AS `Day 3 IN`, source.Day_3_OUT AS `Day 3 OUT`, source.Day_4_IN AS `Day 4 IN`, source.Day_4_OUT AS `Day 4 OUT`, source.Day_5_IN AS `Day 5 IN`, source.Day_5_OUT AS `Day 5 OUT`, source.Day_6_IN AS `Day 6 IN`, source.Day_6_OUT AS `Day 6 OUT`, source.Day_7_IN AS `Day 7 IN`, source.Day_7_OUT AS `Day 7 OUT`, source.Day_8_IN AS `Day 8 IN`, source.Day_8_OUT AS `Day 8 OUT`, source.Day_9_IN AS `Day 9 IN`, source.Day_9_OUT AS `Day 9 OUT`, source.Day_10_IN AS `Day 10 IN`, source.Day_10_OUT AS `Day 10 OUT`, source.Day_11_IN AS `Day 11 IN`, source.Day_11_OUT AS `Day 11 OUT`, source.Day_12_IN AS `Day 12 IN`, source.Day_12_OUT AS `Day 12 OUT`, source.Day_13_IN AS `Day 13 IN`, source.Day_13_OUT AS `Day 13 OUT`, source.Day_14_IN AS `Day 14 IN`, source.Day_14_OUT AS `Day 14 OUT`, source.Day_15_IN AS `Day 15 IN`, source.Day_15_OUT AS `Day 15 OUT`, source.Day_16_IN AS `Day 16 IN`, source.Day_16_OUT AS `Day 16 OUT`, source.Day_17_IN AS `Day 17 IN`, source.Day_17_OUT AS `Day 17 OUT`, source.Day_18_IN AS `Day 18 IN`, source.Day_18_OUT AS `Day 18 OUT`, source.Day_19_IN AS `Day 19 IN`, source.Day_19_OUT AS `Day 19 OUT`, source.Day_20_IN AS `Day 20 IN`, source.Day_20_OUT AS `Day 20 OUT`, source.Day_21_IN AS `Day 21 IN`, source.Day_21_OUT AS `Day 21 OUT`, source.Day_22_IN AS `Day 22 IN`, source.Day_22_OUT AS `Day 22 OUT`, source.Day_23_IN AS `Day 23 IN`, source.Day_23_OUT AS `Day 23 OUT`, source.Day_24_IN AS `Day 24 IN`, source.Day_24_OUT AS `Day 24 OUT`, source.Day_25_IN AS `Day 25 IN`, source.Day_25_OUT AS `Day 25 OUT`, source.Day_26_IN AS `Day 26 IN`, source.Day_26_OUT AS `Day 26 OUT`, source.Day_27_IN AS `Day 27 IN`, source.Day_27_OUT AS `Day 27 OUT`, source.Day_28_IN AS `Day 28 IN`, source.Day_28_OUT AS `Day 28 OUT`, source.Day_29_IN AS `Day 29 IN`, source.Day_29_OUT AS `Day 29 OUT`, source.Day_30_IN AS `Day 30 IN`, source.Day_30_OUT AS `Day 30 OUT`, source.Day_31_IN AS `Day 31 IN`, source.Day_31_OUT AS `Day 31 OUT` 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_IN`, MAX(CASE WHEN DAY(time) = 1 THEN max_time END) AS `Day_1_OUT`, MAX(CASE WHEN DAY(time) = 2 THEN min_time END) AS `Day_2_IN`, MAX(CASE WHEN DAY(time) = 2 THEN max_time END) AS `Day_2_OUT`, MAX(CASE WHEN DAY(time) = 3 THEN min_time END) AS `Day_3_IN`, MAX(CASE WHEN DAY(time) = 3 THEN max_time END) AS `Day_3_OUT`, MAX(CASE WHEN DAY(time) = 4 THEN min_time END) AS `Day_4_IN`, MAX(CASE WHEN DAY(time) = 4 THEN max_time END) AS `Day_4_OUT`, MAX(CASE WHEN DAY(time) = 5 THEN min_time END) AS `Day_5_IN`, MAX(CASE WHEN DAY(time) = 5 THEN max_time END) AS `Day_5_OUT`, MAX(CASE WHEN DAY(time) = 6 THEN min_time END) AS `Day_6_IN`, MAX(CASE WHEN DAY(time) = 6 THEN max_time END) AS `Day_6_OUT`, MAX(CASE WHEN DAY(time) = 7 THEN min_time END) AS `Day_7_IN`, MAX(CASE WHEN DAY(time) = 7 THEN max_time END) AS `Day_7_OUT`, MAX(CASE WHEN DAY(time) = 8 THEN min_time END) AS `Day_8_IN`, MAX(CASE WHEN DAY(time) = 8 THEN max_time END) AS `Day_8_OUT`, MAX(CASE WHEN DAY(time) = 9 THEN min_time END) AS `Day_9_IN`, MAX(CASE WHEN DAY(time) = 9 THEN max_time END) AS `Day_9_OUT`, MAX(CASE WHEN DAY(time) = 10 THEN min_time END) AS `Day_10_IN`, MAX(CASE WHEN DAY(time) = 10 THEN max_time END) AS `Day_10_OUT`, MAX(CASE WHEN DAY(time) = 11 THEN min_time END) AS `Day_11_IN`, MAX(CASE WHEN DAY(time) = 11 THEN max_time END) AS `Day_11_OUT`, MAX(CASE WHEN DAY(time) = 12 THEN min_time END) AS `Day_12_IN`, MAX(CASE WHEN DAY(time) = 12 THEN max_time END) AS `Day_12_OUT`, MAX(CASE WHEN DAY(time) = 13 THEN min_time END) AS `Day_13_IN`, MAX(CASE WHEN DAY(time) = 13 THEN max_time END) AS `Day_13_OUT`, MAX(CASE WHEN DAY(time) = 14 THEN min_time END) AS `Day_14_IN`, MAX(CASE WHEN DAY(time) = 14 THEN max_time END) AS `Day_14_OUT`, MAX(CASE WHEN DAY(time) = 15 THEN min_time END) AS `Day_15_IN`, MAX(CASE WHEN DAY(time) = 15 THEN max_time END) AS `Day_15_OUT`, MAX(CASE WHEN DAY(time) = 16 THEN min_time END) AS `Day_16_IN`, MAX(CASE WHEN DAY(time) = 16 THEN max_time END) AS `Day_16_OUT`, MAX(CASE WHEN DAY(time) = 17 THEN min_time END) AS `Day_17_IN`, MAX(CASE WHEN DAY(time) = 17 THEN max_time END) AS `Day_17_OUT`, MAX(CASE WHEN DAY(time) = 18 THEN min_time END) AS `Day_18_IN`, MAX(CASE WHEN DAY(time) = 18 THEN max_time END) AS `Day_18_OUT`, MAX(CASE WHEN DAY(time) = 19 THEN min_time END) AS `Day_19_IN`, MAX(CASE WHEN DAY(time) = 19 THEN max_time END) AS `Day_19_OUT`, MAX(CASE WHEN DAY(time) = 20 THEN min_time END) AS `Day_20_IN`, MAX(CASE WHEN DAY(time) = 20 THEN max_time END) AS `Day_20_OUT`, MAX(CASE WHEN DAY(time) = 21 THEN min_time END) AS `Day_21_IN`, MAX(CASE WHEN DAY(time) = 21 THEN max_time END) AS `Day_21_OUT`, MAX(CASE WHEN DAY(time) = 22 THEN min_time END) AS `Day_22_IN`, MAX(CASE WHEN DAY(time) = 22 THEN max_time END) AS `Day_22_OUT`, MAX(CASE WHEN DAY(time) = 23 THEN min_time END) AS `Day_23_IN`, MAX(CASE WHEN DAY(time) = 23 THEN max_time END) AS `Day_23_OUT`, MAX(CASE WHEN DAY(time) = 24 THEN min_time END) AS `Day_24_IN`, MAX(CASE WHEN DAY(time) = 24 THEN max_time END) AS `Day_24_OUT`, MAX(CASE WHEN DAY(time) = 25 THEN min_time END) AS `Day_25_IN`, MAX(CASE WHEN DAY(time) = 25 THEN max_time END) AS `Day_25_OUT`, MAX(CASE WHEN DAY(time) = 26 THEN min_time END) AS `Day_26_IN`, MAX(CASE WHEN DAY(time) = 26 THEN max_time END) AS `Day_26_OUT`, MAX(CASE WHEN DAY(time) = 27 THEN min_time END) AS `Day_27_IN`, MAX(CASE WHEN DAY(time) = 27 THEN max_time END) AS `Day_27_OUT`, MAX(CASE WHEN DAY(time) = 28 THEN min_time END) AS `Day_28_IN`, MAX(CASE WHEN DAY(time) = 28 THEN max_time END) AS `Day_28_OUT`, MAX(CASE WHEN DAY(time) = 29 THEN min_time END) AS `Day_29_IN`, MAX(CASE WHEN DAY(time) = 29 THEN max_time END) AS `Day_29_OUT`, MAX(CASE WHEN DAY(time) = 30 THEN min_time END) AS `Day_30_IN`, MAX(CASE WHEN DAY(time) = 30 THEN max_time END) AS `Day_30_OUT`, MAX(CASE WHEN DAY(time) = 31 THEN min_time END) AS `Day_31_IN`, MAX(CASE WHEN DAY(time) = 31 THEN max_time END) AS `Day_31_OUT` 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;
Comments