我有一个包含以下字段的表:
Date
EmpId
TimeIn
TimeOut
Status
它是一张考勤表。基本上我需要计算工资单(我在另一张表中得到了工资和扣除额)。通过计算每个员工在特定范围或上个月的完整状态。
我需要以下格式输出:
EmpID|Days Present|Days Late|Days Absent| After TimeIn A| After TimeIn B|
“状态”字段包含员工的状态,即。根据时间等,在特定日期出现,迟到,缺席。
我不能破解这个。任何帮助将非常感激。 感谢
答案 0 :(得分:5)
由于您未指定枚举Status
列的方式,因此我做了一些假设。显然,您需要在每个CASE语句中替换正确的值。
SELECT EmpId,
SUM(CASE WHEN Status = 'Present' THEN 1 ELSE 0 END) AS `Days Present`,
SUM(CASE WHEN Status = 'Late' THEN 1 ELSE 0 END) AS `Days Late`,
SUM(CASE WHEN Status = 'Absent' THEN 1 ELSE 0 END) AS `Days Absent`,
SUM(CASE WHEN Status = 'After A' THEN 1 ELSE 0 END) AS `After Timein A`,
SUM(CASE WHEN Status = 'After B' THEN 1 ELSE 0 END) AS `After Timein B`
FROM Attendance
WHERE Date >= {Your Start Date}
AND Date <= {Your End Date}
GROUP BY EmpId