在我的sql表中计算不同的状态

时间:2012-04-27 18:54:23

标签: mysql

我有一个包含以下字段的表:

Date    
EmpId   
TimeIn  
TimeOut 
Status

它是一张考勤表。基本上我需要计算工资单(我在另一张表中得到了工资和扣除额)。通过计算每个员工在特定范围或上个月的完整状态。

我需要以下格式输出:

EmpID|Days Present|Days Late|Days Absent| After TimeIn A| After TimeIn B|

“状态”字段包含员工的状态,即。根据时间等,在特定日期出现,迟到,缺席。

我不能破解这个。任何帮助将非常感激。 感谢

1 个答案:

答案 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