Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: JePl am September 21, 2015, 15:21:29

Titel: Gruppierung und Max()
Beitrag von: JePl am September 21, 2015, 15:21:29
Hallo,

ich komme hier gerade nicht weiter und hoffe, dass mir jemand weiterhelfen kann.

Ich habe eine Tabelle mit einem Feld "Vertragsnummer" und diversen anderen Feldern. Die Vertragsnummer setzt sich aus einer 4-stelligen Jahreszahl + einer 6-stelligen Nummer zusammen. Die 6-stellige Nummer kommt dabei mit verschiedenen Jahreszahlen vor. Also zum Beispiel
Vertragsnummer:

1997261304
1998261304
2000261304
2001261304

Ich benötige jetzt zu jeder Vertragsnummer die entsprechende Vertragsnummer der jüngsten Periode. Dies wäre im Beispiel die des Jahres 2001:

1997261304     2001261304
1998261304     2001261304
2000261304     2001261304
2001261304     2001261304

Ich habe schon Felder für "Jahr" (Left([VTN];4)) und "Nummer" (Right([VTN];6)) erstellt und würde nun gern ein weiteres Feld mit der Vertragsnummer der jüngsten Periode füllen bzw. erstellen. Aber das bekomme ich leider nicht hin  :'(

Bin für Tipps dankbar.

Beste Grüße
Titel: Re: Gruppierung und Max()
Beitrag von: MaggieMay am September 21, 2015, 15:30:45
Hallo,

musst du zu jeder Nummer das jüngste Jahr suchen oder gilt eine Jahreszahl für alle?
Beispiel:
Select * From tabelle Where Left(VTN,4) = (Select Max(Left(VTN,4)) From tabelle)
oder so:
Select t1.* From tabelle As t1 Where Left(t1.VTN,4) = (Select Max(Left(t2.VTN,4)) From tabelle As t2 Where Right(t2.VTN,6) = Right(t1.VTN,6))
Titel: Re: Gruppierung und Max()
Beitrag von: JePl am September 21, 2015, 16:17:20
Vielen Dank!

Ich brauche zu jeder Nummer das jüngste Jahr. Die Jahreszahlen sind leider nicht immer gleich.

Wo setze ich den Code jetzt ein? Unter Criteria?

Hoffe ich schaffe es.
Titel: Re: Gruppierung und Max()
Beitrag von: MaggieMay am September 21, 2015, 16:44:57
Was ich gepostet habe ist der SQL-Code einer Abfrage. Den musst du natürlich noch an die bei dir gültigen Namen anpassen.
Titel: Re: Gruppierung und Max()
Beitrag von: ebs17 am September 21, 2015, 21:35:17
SELECT
   MAX(Vertragsjahr) AS LetztesJahr,
   VertragsLaufNr
FROM
   tblVertraege
GROUP BY
   VertragsLaufNr

So simpel wäre es, wenn man von Haus aus die atomaren Informationen in getrennten Feldern führt (normalisiert).
Außerdem ist es schneller, um so mehr, wenn da Indizes vorliegen. Kann ja sein, Du verarbeitest ein paar mehr Datensätze.
Titel: Re: Gruppierung und Max()
Beitrag von: JePl am September 22, 2015, 10:57:13
Tausend Dank an MaggieMay und ebs17.

Habe jetzt - damit es einfacher nachzuvollziehen ist - in der Ursprungstabelle die Vertragsnummer in Jahr und Nummer getrennt und dann die Abfrage von ebs17 genommen  :D