чет не получается запрос (((

Пгуые123
Дата: 02.03.2007 17:31:05
как выбрать строчку, с наисвежайшей датой?
чет заклинило (((
select "nom"
from
(
      select 1 "nom", sysdate-4 "date" from dual
      union all
      select 2 "nom", sysdate-3 "date" from dual
      union all
      select 3 "nom", sysdate-1 "date" from dual
      union all
      select 4 "nom", sysdate-2 "date" from dual
)
tru55
Дата: 02.03.2007 17:33:23
неужели MAX ???
Пгуые123
Дата: 02.03.2007 17:36:29
что MAX???
Наисвежайшую дату я выбрать могу, но мне та надо строчку...
неужталь подзапрос городить из за этого?
Ловец Стрекоз
Дата: 02.03.2007 17:42:04
with works as (
      select 1 nom, sysdate-4 dat from dual
      union all
      select 2 nom, sysdate-3 dat from dual
      union all
      select 3 nom, sysdate-1 dat from dual
      union all
      select 4 nom, sysdate-2 dat from dual
) select nom, dat from
      (select nom, dat, row_number() over (order by dat desc) rn from works)
   where rn=1;
ORA-01403
Дата: 02.03.2007 17:42:28
Пгуые123
что MAX???
Наисвежайшую дату я выбрать могу, но мне та надо строчку...
неужталь подзапрос городить из за этого?


А чем плохо? Если не устраивает MAX можно еще отсортировать по дате и выбраь по rownum = 1
Пгуые123
Дата: 02.03.2007 17:43:20
select *
from
(
      select 1 "nom", sysdate-4 "date" from dual
      union all
      select 2 "nom", sysdate-3 "date" from dual
      union all
      select 3 "nom", sysdate-1 "date" from dual
      union all
      select 4 "nom", sysdate-2 "date" from dual
)
where "date" =(
select max("date")
from
(
      select 1 "nom", sysdate-4 "date" from dual
      union all
      select 2 "nom", sysdate-3 "date" from dual
      union all
      select 3 "nom", sysdate-1 "date" from dual
      union all
      select 4 "nom", sysdate-2 "date" from dual
)
)

вот так не нравится... (((
хочется

select "nom"
from
(
      select 1 "nom", sysdate-4 "date" from dual
      union all
      select 2 "nom", sysdate-3 "date" from dual
      union all
      select 3 "nom", sysdate-1 "date" from dual
      union all
      select 4 "nom", sysdate-2 "date" from dual
)
where "date" = max("date")
tru55
Дата: 02.03.2007 17:46:25
Хочется - перехочется
Ну сказали же уже, например, так
SELECT *
FROM
(
select 1 nom, sysdate-4 date1 from dual
union all
select 2 nom, sysdate-3 date1 from dual
union all
select 3 nom, sysdate-1 date1 from dual
union all
select 4 nom, sysdate-2 date1 from dual
ORDER BY date1 DESC
)
WHERE rownum = 1
Пгуые123
Дата: 02.03.2007 17:46:47
ORA-01403
Пгуые123
что MAX???
Наисвежайшую дату я выбрать могу, но мне та надо строчку...
неужталь подзапрос городить из за этого?


А чем плохо? Если не устраивает MAX можно еще отсортировать по дате и выбраь по rownum = 1

всеравно подзапрос получается (((((
select*
from
(
select *
from
(
      select 1 "nom", sysdate-4 "date" from dual
      union all
      select 2 "nom", sysdate-3 "date" from dual
      union all
      select 3 "nom", sysdate-1 "date" from dual
      union all
      select 4 "nom", sysdate-2 "date" from dual
)
order by "date" DESC
)
where rownum<2
givanov
Дата: 02.03.2007 18:21:41
Еще можно
select min("nom") keep (dense_rank last order by "date") "nom"
from
(
      select 1 "nom", sysdate-4 "date" from dual
      union all
      select 2 "nom", sysdate-3 "date" from dual
      union all
      select 3 "nom", sysdate-1 "date" from dual
      union all
      select 4 "nom", sysdate-2 "date" from dual
)
Но это без "*".
orawish
Дата: 02.03.2007 18:23:34
with t as (select 1 n, sysdate-4 d from dual
union all  select 2  , sysdate-3 from dual) 
select * from t where n 
 in (select min(n) keep (dense_rank first order by d desc) from t);