Benutzer mit den meisten Antworten
Daten ermitteln

Frage
-
Hallo
Ich hoffe ihr könnt mir helfen:
Ich habe eine Tabelle. In dieser ist in der ersten Spalte das Datum angegeben (jeder Tag, also auch die Wochenenden). Zu jedem Arbeitstag gibt es einen Mitarbeiter, der Früh- und einen der Spätschicht bei der Arbeit hat. Das sieht dann so aus:
Datum | Früh | Abend
28.02.19 | MA1 | MA2
01.03.19 | MA3 | MA4
02.03.19
03.03.19
04.03.19 | MA3 | MA1
05.03.19 | MA2 | MA6Ich möchte jetzt eine Auswertung machen (z.B. über das ganze letzte Jahr), welcher Mitarbeiter wieviele Frühdienste am Anfang der Woche hatte. Eine Arbeitswoche dauert normalerweise von Montag bis Freitag. Und hier tauchen die Probleme auf. Denn z.B. an Ostern ist der erste Tag der Woche der Dienstag, da Ostermontag kein Arbeitstag ist. Ebenso Pfingsten und sonstige Feiertage. Diese Daten kann man alle berechnen (von Ostern abhängig) oder sind Fix (z.B. Nationalfeiertag).
Jetzt bin ich auf der Suche nach der einfachsten Lösung, wie ich dieses Auswertung machen kann.
Ich hoffe, das Problem verständlich erklärt zu haben.
Danke und Gruss Thomas
Antworten
-
Hallo Thomas
Ich würde eine zusätzliche Tabelle erstellen mit nur einer Spalte welche der PK ist und das Datum des ersten Arbeitstages enthält. Damit bist du flexibel um dein Bedürfnis eintragen zu können.
Bei der Abfrage musst du anstelle der Where Bedingung nur ein Join der beiden Datumsfelder einfügen.
Natürlich muss jeweils zu Beginn eines neuen Jahres diese Tabelle gefüllt werden was aber mit 52 oder 53 Einträgen ja relativ schnell gemacht werden kann.
Gruss Markus
- Als Antwort markiert Alphawolfi Mittwoch, 24. April 2019 15:44
Alle Antworten
-
Hallo Thomas,
wo genau liegt nun das Problem? In der Ermittlung der Feiertage? Falls ja, nur die bundesweiten oder je Bundesland?
Definiere dann bitte auch noch "Anfang der Woche". Ist damit der erste Arbeitstag in der KW gemeint? Oder die ersten beiden?
Gibt es jeden Tag in deiner Tabelle nur ein einziges mal?
Und wie soll das Ergebnis anhand deiner Beispieldaten genau aussehen?
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport -
Hallo Stefan
Danke für Deine Antwort.
Zuerst zu Deinen Fragen:
Nur die nationalen Feiertage
Ja, "Anfang der Woche" ist der erste Arbeitstag der KW gemeint.
Ja, jeden Tag der Tabelle nur ein einziges Mal.Als Resultat will ich die Anzahl Einsätze pro Mitarbeiter am ersten Arbeitstag der Woche.
Also eigentlich so (pAttendanceDate -> Datum, AttendanceEarly -> Name Mitarbeiter)
SELECT Weekday([pAttendanceDate]) AS Expr1, tblAttendance.AttendanceEarly, Year([pAttendanceDate]) AS Expr2, Count(tblAttendance.AttendanceEarly) AS CountAttendanceEarly FROM tblAttendance GROUP BY Weekday([pAttendanceDate]), tblAttendance.AttendanceEarly, Year([pAttendanceDate]) HAVING (((Weekday([pAttendanceDate]))=2) AND ((Year([pAttendanceDate]))=2018));
Diese Abfrage stimmt so aber nicht, da der 2.4.18 (Ostermontag) 21.5.18 (Pfingstmontag) in der Abfrage enthalten sind, aber in diesen beiden Wochen der Erste Arbeitstag der Woche am Dienstag ist, da der Montag ein Feiertag ist. Also an diesen beiden Wochen muss der Dienstag ausgewertet werden.
Je nach dem wie Weihnachten oder der Jahresbeginn fällt kann der erste Arbeitstag der Woche sogar der Mittwoch sein.
Danke und Gruss Thomas
- Bearbeitet Alphawolfi Dienstag, 12. März 2019 11:13
-
Hallo Thomas
Ich würde eine zusätzliche Tabelle erstellen mit nur einer Spalte welche der PK ist und das Datum des ersten Arbeitstages enthält. Damit bist du flexibel um dein Bedürfnis eintragen zu können.
Bei der Abfrage musst du anstelle der Where Bedingung nur ein Join der beiden Datumsfelder einfügen.
Natürlich muss jeweils zu Beginn eines neuen Jahres diese Tabelle gefüllt werden was aber mit 52 oder 53 Einträgen ja relativ schnell gemacht werden kann.
Gruss Markus
- Als Antwort markiert Alphawolfi Mittwoch, 24. April 2019 15:44