Das reicht so nicht, wenn nicht in einem 3. Feld vermerkt ist, welcher Satz denn tatsächlich der letzte ist (z.B. Zähler oder Datum), da die Kombination Vertrag und Werktag ja mehrfach vorkommen kann:

delete from myfile A
where digits(Vertrag) concat digits(Werktag) concat digits(xxxx)
in (select digits(Vertrag) concat digits(Werktag) concat digits(xxxx)
from myfile b
where a.vertrag=b.vertrag and a.werktag=b.werktag and
a.xxxx < (select max(xxxx) from myfile c where a.vertrag=c.vertrag and a.werktag=c.werktag)
)