Warum eigentlich ein "in"?
SQL-Code:
select auftragsdaten.irgendwas
from auftragsdaten join (select distinct auftragsnr from auftragsdaten where fertigdate between 20180101 and 20181231) a on (auftragsdaten.auftragsnr=a.auftrgsnr)
so ungefähr, die korrekte Syntax und die between-Grenzen müßtest Du noch überprüfen.
Gruß
K-H
P.S.
Zumndest Oracle begrenzt die "in-Menge" auf 2000 Einträge.