Hallo,

alternativ geht auch als join (den select max(...) mit der Table selber joinen) könnte schneller sein als die rekursive Lösung, die Baldur vorschlägt.
Ich würde schon zu der View raten, da dann das komplexe des Statements im Programm weg ist. Wenn man einen ORDER braucht, dann gibt man den bei dem Zugriff an.
Wie lange das ganze beim Zugriff selber dauert, das hängt davon ab, ob die entsprechenden Zugriffspfade da sind und da sieht es mit dem MAX über ein gebasteltes Feld schlecht aus, egal ob View, oder im SELECT beim Zugriff.

mfg

Dieter Bender


Zitat Zitat von Fuerchau
select ....
from myfile a
where a.artnr concat digits(a.jahr) concat digits(a.monat) concat digits(a.tag) =
(select max(b.artnr concat digits(b.jahr) concat digits(b.monat) concat digits(b.tag))
from myfile b
where a.artnr = b.artnr
and date('20' concat digits(b.jahr) concat '-' concat digits(b.monat) concat '-' concat digits(b.tag)) <= current date)

Einfache wäre es, wenn das Datum (insbesonders das Jahr) bereits 8-stellig oder als Typ Date vorläge.

Als View ist das aber nicht unbedingt geeignet, da kein Order by möglich ist und der Zugriff dann ggf. etwas dauert.
Einfacher wäre der SQL direkt im Programm mit Parametern z.B. auf Artikel-Nr.