Hallo,
Ich habe eine Tabelle in der DB, und möchte in einer Abfrage 2 Kriterien einstellen, das erste Kriterium ist, dass die Daten aus der Spalte KundenNr nach dem Datum bzw. nach ihrem aktuellstem Datum gefiltert werden.
zum Beispiel:
KundenNr Change On
1008690 5.04.2019
1008690 9.05.2019
1008690 9.07.2019
1008690 12.10.2019
Ich will in meiner Abfrage nur die KundenNr mit ihrer letzten Änderung ( letzes Datum) anzeigen lassen.
kann jemand bitte mir helfen?
LG
Mahi
Hallo,
Klicke in der Abfrageentwurfsansicht oben rechts mal auf das Summenzeichen.
Vielleicht bekommst du es dann selber hin. Falls dir da kein Licht aufgeht,
melde dich ruhig wieder.
gruss ekkehard
Zitat von: Mahi am Dezember 07, 2020, 15:08:38Ich habe eine Tabelle in der DB, und möchte in einer Abfrage 2 Kriterien einstellen, das erste Kriterium ist, dass die Daten aus der Spalte KundenNr nach dem Datum bzw. nach ihrem aktuellstem Datum gefiltert werden.
Schau dir mal den Absatz
Daten des letzten Kind-Datensatzes anzeigen (https://codekabinett.com/rdumps.php?Lang=1&targetDoc=abfrage-1-zu-n-aggregatfunktion-letzter-datensatz) (2. Hälfte des Textes) an. Das behandelt genau deine Fragestellung.
Danke PhilS, das hat super funktioniert :)
wenn ich dieses Kriterium mit einer Wenn-Funktion kombinieren möchte, wie kann das dann funktioniern ?
z.B.
Ich will das letzte Änderungsdatumm UND Type nicht D ist , dass heißt: zeige mir das letzte Datum der KundenNr nur wenn deren Typ nicht "D" ist .
KundenNr Change On Type
1008690 5.04.2019 A
1008690 9.05.2019 F
1008690 9.07.2019 U
1008690 12.10.2019 D Das muss nicht angezeigt werden, weil die letzte Änderung "D" ist
... WHERE Tabelle.Type <> 'D'
Das ist als eine allgemeine Antwort ganz richtig, aber hier geht's darum, wenn die letzte Änderung "D" wäre, dann muss diese KundenNr komplett nicht angezeigt werden, mit dieser Lösung was du mir geschrieben hast, wird die KundenNr mit vorherigen und alten Datum und deren Typen angezeigt.
Also das Ziel ist, wenn Typ "D" ist ( D heißt DELET ), bedeutet das, dass KundenNr wurde in der Tabelle gelöscht und wir haben keinen Kundnen mit dieser Nummer, wir wollen das in unserer Abfrage filtern und nur diejenige anzeigen, dernen Typ nicht "D" ist .
z.B.
KundenNr Change On Type
1008690 5.04.2019 A
1008690 9.05.2019 F
1008690 9.07.2019 U
1008690 12.10.2019 D Dise Nummer muss nicht angezeigt werden, weil die letzte Änderung "D" ist
1009388 9.05.2019 A
1009388 10.05.2019 U Dieses Nummer muss aber wiederrum angezeigt werden, weil letzte Änderung U ist.
Zitatnur diejenige anzeigen, dernen Typ nicht "D" ist
SELECT
T.*
FROM
TabelleX AS T
WHERE
NOT EXISTS
(
SELECT
NULL
FROM
TabelleX AS X
WHERE
X.KundenNr = T.KundenNr
AND
X.Type = 'D'
)Damit wird die Tabelle auf jene Kunden reduziert, bei denen es keinen Löscheintrag gibt. Diese Abfrage kannst Du nun mit der Ermittlung des letzten Eintrages verknüpfen.
Das hat leider nicht funktioniert, ich bekomme immer noch die Kunden mit Type 'D' angezeigt :(
Zitat von: Mahi am Dezember 13, 2020, 20:28:11Das hat leider nicht funktioniert, ich bekomme immer noch die Kunden mit Type 'D' angezeigt :(
Zeig mal den vollständigen SQL-Text deiner Abfrage.
SELECT Kunden.[KundenNr], Kunden.Origin, Kunden.Note, Kunden.Type, Max(Kunden.[Changed On]) AS [MaxOfChanged On], Kunden.[Changed at]
FROM Kunden
GROUP BY Kunden.[KundenNr], Kunden.Origin, Kunden.Note, Kunden.Type,
HAVING (((Kunden.Origin)="T"));