nie możesz używać aliasów z listy SELECT wewnątrz klauzuli WHERE (z powodu Kolejności oceny instrukcji SELECT )
również nie możesz użyć OVER
klauzula wewnątrz klauzuli WHERE - "Za pomocą tej klauzuli można określić funkcje analityczne na liście wyboru lub klauzuli ORDER BY." (cytat z docs.oracle.com )
select *
from (select
staff_id, site_id, pay_level, date,
max(date) over (partition by staff_id) max_date
from owner.table
where end_enrollment_date is null
)
where date = max_date