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

Откуда: Житомир - Киев
Сообщений: 732
Привет всем!

Кто-то пробовал сделать аналог функций LEAD/LAG Oracle?
Например: FIRST_VALUE/LAST_VALUE существуют, а вот LEAD/LAG не нашел.

Для справки:
LEAD- Возвращает значения из следующей строки из результата запроса.
LAG- Возвращает значения из предыдущей строки из результата запроса.
Server-ASA17

Спасибо!
29 сен 17, 14:59    [20831923]     Ответить | Цитировать Сообщить модератору
 Re: Аналог LEAD/LAG Oracle  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 33571
PaulJB
LEAD- Возвращает значения из следующей строки из результата запроса.
LAG- Возвращает значения из предыдущей строки из результата запроса.


Предыдущей по какому критерию ?
29 сен 17, 15:09    [20831965]     Ответить | Цитировать Сообщить модератору
 Re: Аналог LEAD/LAG Oracle  [new]
PaulJB
Member

Откуда: Житомир - Киев
Сообщений: 732
Например запрос (Oracle):
select t.id,
t.code,
lag(t.code) over(order by t.id) as prev,
lead(t.code) over(order by t.id) as next
from TABLE t
order by t.id

Результат:
===============================
N | ID | CODE | PREV | NEXT
===============================
1 | 51 | IsCr |<NULL>| TrP
2 | 52 | TrP | IsCr | Iss |
3 | 279 | Iss | TrP | Iss |
4 | 372 | Iss | Iss | qqq
5 | 663 | qqq | Iss | gggg
6 |666 | gggg | qqq | eee
7 | 667 | eee | gggg |<NULL>
===============================

Где-то так ...
Хотелось- бы подобное для ASA

Сорри за табличку - как то криво получилось. :(

Спасибо
29 сен 17, 15:42    [20832071]     Ответить | Цитировать Сообщить модератору
 Re: Аналог LEAD/LAG Oracle  [new]
Бумбараш
Member

Откуда: никем не победимая, самая любимая
Сообщений: 1851
max(t.code) over (partition by 1 order by t.id rows between 1 preceding and 1 preceding) as prev,
max(t.code) over (partition by 1 order by t.id rows between 1 following and 1 following) as next
29 сен 17, 23:35    [20832847]     Ответить | Цитировать Сообщить модератору
 Re: Аналог LEAD/LAG Oracle  [new]
PaulJB
Member

Откуда: Житомир - Киев
Сообщений: 732
Бумбараш, Огромное человеческое Спасибо!

Правда, почему-то, "с колес" не заработало.
ASA не принял фразу "partition by 1".
Получил ошибку:
Invalid ORDER BY specification
SQLCODE=-152, ODBC 3 State="42000"

В моем случае "partition by ..." надо было просто убрать.
2 окт 17, 10:30    [20835585]     Ответить | Цитировать Сообщить модератору
Все форумы / Sybase ASA, ASE, IQ Ответить