Я хочу вернуть только строку с самой последней датой и только номера счетов, которые у меня есть из другого источника.
Я понимаю, что вам нужна последняя запись для номера счета. Если это так, то одним из решений является использование функций analyti c:
select *
from (
select
p.*,
rank() over(partition by account_number order by date desc) rn
from portfolio p
where account_number in (444347, 899999, 887111, 220922)
) t
where rn = 1
. Другой подход использует коррелированный подзапрос для фильтрации:
select p.*
from portfolio p
where
p.account_number in (444347, 899999, 887111, 220922)
and p.date = (
select max(p1.date) from portfolio p1 where p1.account_number = p.account_number
)