1

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

Date    
EmpId   
TimeIn  
TimeOut 
Status

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

我需要以下格式的输出:

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

状态字段包含员工的状态,即。出席,迟到,缺席,特定日期取决于时间等。

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

4

1 回答 1

10

由于您没有指定如何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
于 2012-04-27T19:00:37.267 回答