Zum Inhalt wechseln


Foto

Join mit Max verwenden

MS SQL

  • Bitte melde dich an um zu Antworten
Eine Antwort in diesem Thema

#1 siffkroete

siffkroete

    Newbie

  • 1 Beiträge

 

Geschrieben 14. März 2016 - 20:03

Hi Leute

Ich habe 2 Tabellen: Mitarbeiter  und Pensum (1->n). Ein Mitarbeiter hat verschiedene Pensen je nach Datum.
Jetzt möchte ich wissen welches Pensum gilt für welchen Mitarbeiter aktuell. Es soll also den Datensatz liefern mit Datum kleiner gleich 2016.03.14. Was aber wenn mehrere Daten kleiner als 2016.03.14 sind? Dann soll es das nächst aktuellste Datum ausgeben. Also MAX(Alle Daten<=2016.03.14). Ich habe es folgenderweise versucht:

SELECT Mitarbeiter.Name,Mitarbeiter.Vorname, Pensum.AnzahlStunden, MAX(Pensum.Datum)
FROM Mitarbeiter INNER JOIN Pensum
WHERE Datum<='2016.03.14';

Leider wird das Maximum von der ganzen Komplementärmenge Name,Vorname X Pensum, Datum herausgegeben und nicht das Maximum für jeden Mitarbeiter. Das ist nur ein Datensatz. Ich will aber für jeden Mitarbeiter ein Datensatz mit dem aktuellen Pensum. Was tun? Kann man irgenwie JOIN mit MAX kombinieren?
 

 


Bearbeitet von siffkroete, 14. März 2016 - 20:04.


#2 wilgin

wilgin

    Member

  • 226 Beiträge

 

Geschrieben 06. April 2016 - 12:16

Hallo,
ich nehme mal an das die beiden Tabellen über einen Mitarbeiterschlüssel verknüpft sind. Wenn dem so ist, versuch mal das:

 

select max(p.datum), m.name, m.vorname, p,AnzahlStunden

from pensum p join mitarbeiter m on p.key=m.key

group by m.name, m.vorname, p,AnzahlStunden

 

vg

Wilfried


Wilfried



Auch mit einem oder mehreren der folgenden Tags versehen: MS SQL