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 に答える