2 Stimmen

Zählen verschiedener Status in meiner SQL-Tabelle

Ich habe eine Tabelle mit den folgenden Feldern:

Date    
EmpId   
TimeIn  
TimeOut 
Status

Es ist eine Anwesenheitstabelle. Im Grunde muss ich die Gehaltsabrechnung berechnen (ich habe das Gehalt und die Abzüge in einer anderen Tabelle). Durch die Zählung jeder Art von Status für jeden Mitarbeiter mit in einem bestimmten Bereich oder den gesamten letzten Monat.

Ich benötige die Ausgabe in folgendem Format:

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

Das Feld Status enthält den Status des Mitarbeiters, d. h. anwesend, verspätet, abwesend, für den jeweiligen Tag, abhängig von der Uhrzeit usw.

Ich kann das einfach nicht knacken. Für jede Hilfe wäre ich sehr dankbar. Danke

11voto

Joe Stefanelli Punkte 128819

Da Sie nicht angegeben haben, wie die Status Spalte aufgezählt wird, habe ich einige Annahmen getroffen. Natürlich müssen Sie in jeder CASE-Anweisung die richtigen Werte ersetzen.

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X