Такие случаи могут быть решены без подзапросов с помощью keep (dense_rank first...
"идиома":
create table tq84_pershist (
id number,
dt date,
histroy number
);
insert into tq84_pershist values (1, date '2008-01-01', 0);
insert into tq84_pershist values (1, date '2008-01-01', 1);
insert into tq84_pershist values (1, date '2008-01-01', 2);
insert into tq84_pershist values (1, date '2008-01-02', 0);
insert into tq84_pershist values (1, date '2008-01-02', 1);
При такой «настройке» запрос выглядит так:
select max(dt ) keep (dense_rank first order by dt desc, histroy desc) dt,
max(histroy) keep (dense_rank first order by dt desc, histroy desc) histroy
from
tq84_PersHist;
в результате
DT HISTROY
-------- ----------
02.01.08 1