Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Last  [new]
OlegPushkarev
Member

Откуда:
Сообщений: 41
Здравствуйте! подскажите как можно использовать last для select . К примеру вот такой запрос
select last(select aacustomers.cnum from aacustomers where city='LONDON' order by aacustomers.cnum asc) from aacustomers;
Мне нужно из значений, который выбрал селект внутренний получить последнее значение наибольшее или максимальное
или может select aacustomers.cnum from aacustomers where city='LONDON' order by aacustomers.cnum desc limit 1;
все равно не правильно
6 май 18, 15:12    [21390823]     Ответить | Цитировать Сообщить модератору
 Re: Last  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18483
Analytic Functions
Для FIRST и LAST надо еще просечь разницу в определении окна
6 май 18, 15:24    [21390846]     Ответить | Цитировать Сообщить модератору
 Re: Last  [new]
OlegPushkarev
Member

Откуда:
Сообщений: 41
Вячеслав Любомудров, не понятно все равно, over нужно использовать?
6 май 18, 15:48    [21390885]     Ответить | Цитировать Сообщить модератору
 Re: Last  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10040
SQL> select  ename
  2    from  emp
  3    where job = 'CLERK'
  4    order by sal desc
  5    fetch first 1 row only
  6  /

ENAME
----------
MILLER

SQL>


SY.
6 май 18, 15:55    [21390899]     Ответить | Цитировать Сообщить модератору
 Re: Last  [new]
OlegPushkarev
Member

Откуда:
Сообщений: 41
SY, cпасибо огромное!!!
6 май 18, 16:01    [21390913]     Ответить | Цитировать Сообщить модератору
 Re: Last  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10040
OlegPushkarev
SY, cпасибо огромное!!!


Ты бы версию огласил - то что я накропал появилось только в 12C.

SY.
6 май 18, 16:06    [21390920]     Ответить | Цитировать Сообщить модератору
 Re: Last  [new]
OlegPushkarev
Member

Откуда:
Сообщений: 41
SY,
как раз 12 есть дома, а в 11 как это будет?
6 май 18, 16:26    [21390958]     Ответить | Цитировать Сообщить модератору
 Re: Last  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10040
OlegPushkarev
а в 11 как это будет?


SQL> with t as (
  2             select  ename
  3               from  emp
  4               where job = 'CLERK'
  5               order by sal desc
  6            )
  7  select  ename
  8    from  t
  9    where rownum = 1
 10  /

ENAME
----------
MILLER

SQL> with t as (
  2             select  ename,
  3                     row_number() over(order by sal desc) rn
  4               from  emp
  5               where job = 'CLERK'
  6            )
  7  select  ename
  8    from  t
  9    where rn = 1
 10  /

ENAME
----------
MILLER

SQL> select  max(ename) keep(dense_rank last order by sal)
  2    from  emp
  3    where job = 'CLERK'
  4  /

MAX(ENAME)
----------
MILLER

SQL>


SY.
6 май 18, 17:27    [21391034]     Ответить | Цитировать Сообщить модератору
 Re: Last  [new]
OlegPushkarev
Member

Откуда:
Сообщений: 41
SY, спасибо! очень много вариантов, но я решил пойти по 1 и не получилось, что я делаю не так?
with t as(select aacustomers.cnum
from aacustomers where city='LONDON'
order by aacustomers.cnum desc)
select aacustomers.cnum from t
where rownum=1;

ORA-00904: "AACUSTOMERS"."CNUM": недопустимый идентификатор
00904. 00000 - "%s: invalid identifier"
*Cause:
*Action:
Error at Line: 4 Column: 8
6 май 18, 18:18    [21391124]     Ответить | Цитировать Сообщить модератору
 Re: Last  [new]
dmdmdm
Member

Откуда: Нижний Новгород
Сообщений: 1637
OlegPushkarev
select aacustomers.cnum from t
6 май 18, 18:36    [21391145]     Ответить | Цитировать Сообщить модератору
 Re: Last  [new]
OlegPushkarev
Member

Откуда:
Сообщений: 41
dmdmdm, Эту строку я определил, но что с ней не так?
6 май 18, 18:44    [21391154]     Ответить | Цитировать Сообщить модератору
 Re: Last  [new]
dmdmdm
Member

Откуда: Нижний Новгород
Сообщений: 1637
За пределами скобок вы выбираете из t.
6 май 18, 18:47    [21391160]     Ответить | Цитировать Сообщить модератору
 Re: Last  [new]
OlegPushkarev
Member

Откуда:
Сообщений: 41
dmdmdm, а как нужно? Подскажите пожалуйста
6 май 18, 18:53    [21391172]     Ответить | Цитировать Сообщить модератору
 Re: Last  [new]
dmdmdm
Member

Откуда: Нижний Новгород
Сообщений: 1637
Я пытался намеками.

За скобками нет aacustomers.

SQL> with t as ( select dual.dummy from dual)
  2  select dual.dummy from t;

with t as ( select dual.dummy from dual)
select dual.dummy from t

ORA-00904: "DUAL"."DUMMY": недопустимый идентификатор
SQL> with t as ( select dual.dummy from dual)
  2  select t.dummy from t;

DUMMY
-----
X

SQL> 
6 май 18, 18:58    [21391178]     Ответить | Цитировать Сообщить модератору
 Re: Last  [new]
OlegPushkarev
Member

Откуда:
Сообщений: 41
dmdmdm, спасибо большое)))
6 май 18, 19:10    [21391194]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить