Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

SQL Abfrage Filtern

Begonnen von Bernd Sowa, Mai 16, 2025, 10:51:28

⏪ vorheriges - nächstes ⏩

Bernd Sowa

Hallo zusammen,
ich hatte gestern einen Denkfehler.

Die Lösung von gestern funktioniert aber sie reicht nicht aus.

Angepasste Problembeschreibung:
Ich habe eine Tabelle in der Personen mehrfach vorkommen können. Nur halt mit unterschiedlichem Änderungsdatum.

Neu: Dieses Feld kann auch leer sein (wenn die Person noch aktiv ist)

Wenn es also mehrere Datensätze mit der gleichen Person gibt und bei einem Datensatz ist das Feld [Aenderungsdatum] leer, soll diese Person komplett verschwinden.

Dann in der Abfrage (wie gestern) nur die Datensätze mit dem jüngsten Äderungsdatum anzeigen lassen und die anderen ausblenden (wenn Personen mehrfach vorhanden sind).
So dass jede Person nur ein mal vorkommt und zwar mit dem jeweils jüngstem Datum.

Ich hoffe, ich habe mich verständlich ausgedrückt.

Ist: Pers 1 ;
     Pers 1 ; 1990
     Pers 2 ; 2005
     Pers 2 ; 2001
     Pers 1 ; 2008
     Pers 3 : 2000

Soll: Pers 2 ; 2005
      Pers 3 ; 2000

Ich weiß nicht ob das möglich ist.

knobbi38

Hallo Bernd,

thematisch gehört das aber noch zu deinem letzten Thread - warum dann einen neuen aufmachen?

Leer ist in etwas schwammiger Begriff, aber wenn etwas nicht NULL sein soll, dann könnte man auf die Idee kommen, es mal mit 'is not NULL' zu probieren.

Gruß Knobbi38

Bernd Sowa

Hallo knobbi,
wenn ich die leeren einfach rausfilter bekomme ich die Datensätze mit der gleichen Person die ein Änderungsdatum haben trotzdem angezeigt. Das soll ja vermieden werden.

Du hast Recht, ich hätte den vorherigen Thread wieder aufmachen sollen.

knobbi38

Hallo Bernd,

ich habe meine Glaskugel verlegt, deshalb kann ich nicht erkennen, was du da eigentlich treibst.  ::)

Gruß Knobbi38

Bernd Sowa

Ich dachte, ich hätte es oben verständlich dargestellt.

Aus Tabelle:
    [Person];[Aenderungsdatum]
     Pers 1 ;
     Pers 1 ; 1990
     Pers 2 ; 2005
     Pers 2 ; 2001
     Pers 1 ; 2008
     Pers 3 : 2000

Soll in der Abfrage folgendes Ergebnis rauskommen:
      Pers 2 ; 2005
      Pers 3 ; 2000

Person 1 ist 3 x in der Tabelle. 2x mit Änderungsdatum, 1x ohne Änderungsdatum (Soll deshalb gar nicht angezeigt werden - weil noch aktiv im Unternehmen)
Person 2 ist 2x in der Tabelle, beide DS mit Änderungsdatum. Also bitte nur den DS mit dem Jüngsten Datum anzeigen.
Person 3 ist nur 1x in der Tabelle, mit Änderungsdatum. Anzeigen.

Vielleicht auch in mehreren Schritten.
1. Schritt: aktive rausfiltern
2. Schritt: nur die jüngsten Datensätze anzeigen lassen

Hintergrund ist dass alle Personen die länger als 10 Jahre nicht mehr für das Unternehmen tätig waren, herausgefiltert werden. (zum Löschen)
Datenschutz lässt grüßen.

Beaker s.a.

ungetestet aus der hohlen Hand
SELECT T.PersID, Max(T.AeDatum) AS LetzteAe
FROM Tabelle As T
WHERE T.AeDatum Is Not NULL
GROUP BY T.PersID
Und nochmal, - nimm ein richtiges Datumsfeld!

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Bernd Sowa

Hallo Eckehard,
danke für die Antwort. Werde ich so schnell wie möglich testen.

Es ist übrigens ein richtiges Datumsfeld.
Ich habe nur für das Beispiel Jahreszahlen verwendet.

Ich wünsche ein schönes Wochenende...

knobbi38

Zitat... wenn ich die leeren einfach rausfilter bekomme ich die Datensätze mit der gleichen Person die ein Änderungsdatum haben trotzdem angezeigt.
...
Ich dachte, ich hätte es oben verständlich dargestellt.
Woher soll ein Außenstehender wissen, mit welchem SQL-Statement du da etwas rausfilters? Verständlich ist etwas anderes und so können Helfende nur Vermutungen anstellen.


Bernd Sowa

@ Eckehard:
Deine Lösung hat funktioniert. Danke sehr.