powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Реализация функции Lead на версии, которая её не поддерживает
5 сообщений из 5, страница 1 из 1
Реализация функции Lead на версии, которая её не поддерживает
    #39561420
svanrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!

Имею версию 10.50.2550. На данной версии отсутствует возможность выполнения LEAD и LAG, а они нужны.

Апнуть версию не вариант, поэтому прошу подсказать как реализовать выполнение функции LEAD в примере ниже.

Показать следующий статус в рамках одного телефона.

---phone----------status---next status
+79981234567--ring------ring
+79981234567--ring------no ring
+79981234567--no ring--in work
+79981234567--in work--
+79981234568--ring------in work
+79981234568--in work--no ring
+79981234568--no ring--
+79981234569--in work--in work
+79981234569--in work--

Имеются попытки это сделать через row_number + case when..., но всё не то.




Посоветуйте как реализовать функцию Lead на
...
Рейтинг: 0 / 0
Реализация функции Lead на версии, которая её не поддерживает
    #39561428
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
какой case?
row_number() + self join on rn = rn + 1
...
Рейтинг: 0 / 0
Реализация функции Lead на версии, которая её не поддерживает
    #39561429
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yasha123какой case?
row_number() + self join on rn = rn + 1

на факт, что нумерация всего быстрее, чем

Код: sql
1.
outer apply ( select top(1) ...)



ЗЫ. И как челевечество существовало до LEAD и LAG?
...
Рейтинг: 0 / 0
Реализация функции Lead на версии, которая её не поддерживает
    #39561435
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
declare @t table (id int identity, phone bigint, status varchar(100));
insert into @t(phone, status) values
(79981234567, 'ring'), 
(79981234567, 'ring'),
(79981234567, 'no ring'),
(79981234567, 'in work'), 
(79981234568, 'ring'),
(79981234568, 'in work'),
(79981234568, 'no ring'),
(79981234569, 'in work'),
(79981234569, 'in work');

with cte as
(
select *,
       row_number() over(partition by phone order by id) as rn
from @t
)

select c1.*, isnull(c2.status, '--') as next_status
from cte c1 left join cte c2
     on c1.phone = c2.phone and c2.rn = c1.rn + 1;
...
Рейтинг: 0 / 0
Реализация функции Lead на версии, которая её не поддерживает
    #39564470
svanrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Yasha123,

Спасибо!
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Реализация функции Lead на версии, которая её не поддерживает
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]