SQL-Code:
where 1=1
and max(KP.SDATETIME) as datum
sollte da mal korrigiert werden, die erste Zeile enthält eine überflüssige Bedingung, da immer erfüllt und die zweite Zeile enthält nur einen Ausdruck, keine Bedingung.
Oh pardon, da hab ich den typischen CopynPaste-Mist gebaut.
Das
1=1 oder
1=2 nutze ich um die angefragten Felder(Namen) zurück zu bekommen und um ggf. Konstrukte wie
Delphi-Quellcode:
sqltxt.Add(' and Feld=wert ';
sqltxt.Add(' and Person.sex=female';
if irgendeinwert then
sqltxt.Add(' and Feld2 is not null';
enzusetzen. Ist nur meine pers. Marotte.
Um die beiden Datensätze mit dem neuesten/jüngsten Datum zu erhalten mußt Du jetzt nur noch Deinen ursprünglichen Ansatz verfolgen:
SQL-Code:
.....
join (select k.id,max(KP.ABDatum) datum
FROM
Kreditoren as k
join Rel_Kreditor_Artikel KAr on k.ID=KAr.Kreditor_ID
join Kreditor_Artikel KA on KA.ID=KAr.Kreditor_Art_ID
join Rel_Kred_Art_Preise KAPr on KAPr.Kreditor_Art_ID=KA.ID
Join Kreditor_Preise KP on KAPr.Kreditor_Preise_ID=KP.ID
Group by k.ID ) mindate on (mindate.id=k.id and mindate.datum=kp.sdatetime)
ggf. mußt Du noch die Aliase und das/die Datumsfelder anpassen, aber ich hoffe das Prinzip ist deutlich geworden.
Gruß
K-H