Hallo Forum,
ich versuche gerade eine Evakuierungsliste zu erstellen, komme aber nicht weiter.
Folgende Situation ist vorhanden:
Ich habe einen MSSQL Server 2014 und versuche aus zwei Tabellen mir die Daten zu generieren, ob ein Mitarbeiter sich in der Firma befindet oder nicht. Die eine Tabelle enthält die Stammdaten der Mitarbeiter (Master.Stamm_Personal) und die andere enthält die Buchungsdaten (Master.Terminalbuchungen), ob jemand gekommen oder gegangen ist.
Mein Plan wäre nun folgender:
1.
Pro Mitarbeiter den Datensatz auslesen, der den höchsten Zeit Wert für den heutigen Tag hat (ich bekomme es nur hin, dass alle Buchungen des Tages angezeigt werden)
2.
Im nächsten Schritt müsste ich dann prüfen, ob dieser höchste Zeit Wert in der Spalte Satz ein TA (Kommen Buchung) bzw. ein TB (Gehen Buchung) hat - somit würde ich sehen wer sich in der Firma befindet und wer nicht. Interessant für die Evakuierungsliste wären dann natürlich nur die Mitarbeiter, die in der Firma sind, also wenn der höchste Zeit Wert gleichzeitig ein TA im Satz aufweisen würde.
Ich habe folgende SQL Abfrage erstellt, welche mir die Datensätze exemplarisch für einen Mitarbeiter ausgibt (das Ergebnis ist der Screenshot im Anhang):
DECLARE @HEUTE DATE = GETDATE();
SELECT Vorname, Ausweisnummer, Ausweis, Satz, Datum, Zeit
FROM Master.Stamm_Personal INNER JOIN Master.Terminalbuchungen
ON ( Master.Stamm_Personal.Ausweisnummer = Master.Terminalbuchungen.Ausweis )
WHERE Ausweis like '1173'
AND Datum = FORMAT (@HEUTE, 'yyyyMMdd')
ORDER BY Zeit DESC
(Das ORDER BY dient mir im Moment nur, um das Ereignis mit dem höchsten Zeit Wert am schnellsten zu identifizieren und kann später eventuell weg, genauso wie die Beschränkung auf die Ausweisnummer 1173, welche nur zu Test Zwecken die Abfrage auf einen Mitarbeiter eingrenzt).
Vermutlich geht es mit einer (oder mehrern) verschachtelten Abfrage, aber ich habe es bisher nicht hinbekommen und habe auch zu wenig Ahnung davon.
Ich hoffe ich konnte mich einigermaßen verständlich ausdrücken. Wenn etwas unklar ist, gerne einfach nachfragen.
Ich freue mich schon auf Antworten und hoffe, Ihr könnt mir helfen.
Vielen Dank und viele Grüße,
Fegoras
ich versuche gerade eine Evakuierungsliste zu erstellen, komme aber nicht weiter.
Folgende Situation ist vorhanden:
Ich habe einen MSSQL Server 2014 und versuche aus zwei Tabellen mir die Daten zu generieren, ob ein Mitarbeiter sich in der Firma befindet oder nicht. Die eine Tabelle enthält die Stammdaten der Mitarbeiter (Master.Stamm_Personal) und die andere enthält die Buchungsdaten (Master.Terminalbuchungen), ob jemand gekommen oder gegangen ist.
Mein Plan wäre nun folgender:
1.
Pro Mitarbeiter den Datensatz auslesen, der den höchsten Zeit Wert für den heutigen Tag hat (ich bekomme es nur hin, dass alle Buchungen des Tages angezeigt werden)
2.
Im nächsten Schritt müsste ich dann prüfen, ob dieser höchste Zeit Wert in der Spalte Satz ein TA (Kommen Buchung) bzw. ein TB (Gehen Buchung) hat - somit würde ich sehen wer sich in der Firma befindet und wer nicht. Interessant für die Evakuierungsliste wären dann natürlich nur die Mitarbeiter, die in der Firma sind, also wenn der höchste Zeit Wert gleichzeitig ein TA im Satz aufweisen würde.
Ich habe folgende SQL Abfrage erstellt, welche mir die Datensätze exemplarisch für einen Mitarbeiter ausgibt (das Ergebnis ist der Screenshot im Anhang):
DECLARE @HEUTE DATE = GETDATE();
SELECT Vorname, Ausweisnummer, Ausweis, Satz, Datum, Zeit
FROM Master.Stamm_Personal INNER JOIN Master.Terminalbuchungen
ON ( Master.Stamm_Personal.Ausweisnummer = Master.Terminalbuchungen.Ausweis )
WHERE Ausweis like '1173'
AND Datum = FORMAT (@HEUTE, 'yyyyMMdd')
ORDER BY Zeit DESC
(Das ORDER BY dient mir im Moment nur, um das Ereignis mit dem höchsten Zeit Wert am schnellsten zu identifizieren und kann später eventuell weg, genauso wie die Beschränkung auf die Ausweisnummer 1173, welche nur zu Test Zwecken die Abfrage auf einen Mitarbeiter eingrenzt).
Vermutlich geht es mit einer (oder mehrern) verschachtelten Abfrage, aber ich habe es bisher nicht hinbekommen und habe auch zu wenig Ahnung davon.
Ich hoffe ich konnte mich einigermaßen verständlich ausdrücken. Wenn etwas unklar ist, gerne einfach nachfragen.
Ich freue mich schon auf Antworten und hoffe, Ihr könnt mir helfen.
Vielen Dank und viele Grüße,
Fegoras