Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Вывод следующих записей после определенного значения  [new]
Caxa_ASS
Member

Откуда:
Сообщений: 75
Всем привет.

Подскажите, пожалуйста, как правильно написать запрос, чтобы он выводил только следующие записи (дату и значение) после значения 101.

Т.е. в ниже приведенной таблице значение 101 встречается четыре раза. Вывод должен быть следующим:

28.08.2020 8
28.10.2020 73
31.10.2020 77
03.11.2020 25

Пример таблицы:

[img=]

К сообщению приложен файл. Размер - 24Kb
9 ноя 20, 15:34    [22228818]     Ответить | Цитировать Сообщить модератору
 Re: Вывод следующих записей после определенного значения  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20765
WITH cte AS ( SELECT *, LAG(value) OVER (ORDER BY [Date]) lag_value
              FROM src_table )
SELECT *
FROM cte
WHERE lag_value = 101


PS. Запрос (да и сама задача) требуют, чтобы [Date] было уникальным. Либо существовало дополнительное выражение сортировки, обеспечивающее уникальность. При показанных данных это условие уникальности не выполняется, а на физическое расположение записей кивать не следует - оно фэйковое.

Сообщение было отредактировано: 9 ноя 20, 15:36
9 ноя 20, 15:38    [22228821]     Ответить | Цитировать Сообщить модератору
 Re: Вывод следующих записей после определенного значения  [new]
Caxa_ASS
Member

Откуда:
Сообщений: 75
Akina,

Да, есть уникальное значение, столбец Id. T.e. получается необходимо заменить с
 (ORDER BY [Date])
на
(ORDER BY [Id])


[img=]

К сообщению приложен файл. Размер - 28Kb
9 ноя 20, 15:51    [22228833]     Ответить | Цитировать Сообщить модератору
 Re: Вывод следующих записей после определенного значения  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20765
Caxa_ASS
Да, есть уникальное значение, столбец Id. T.e. получается необходимо заменить
Если "предыдущая/следующая" при сортировке по ID соответствует задаче - да.
9 ноя 20, 20:18    [22229074]     Ответить | Цитировать Сообщить модератору
 Re: Вывод следующих записей после определенного значения  [new]
Caxa_ASS
Member

Откуда:
Сообщений: 75
Akina, спасибо за ответ, все работает, но есть не большой нюанс, который я не заметил.

Подскажите, пожалуйста, как модернизировать данный скрипт, так, чтобы он выводил следующие записи после значения 101, но только те следующие записи, которые меньше или равны числу 101.

Буду благодарен за помощь.
15 ноя 20, 10:48    [22232281]     Ответить | Цитировать Сообщить модератору
 Re: Вывод следующих записей после определенного значения  [new]
aleks222
Member

Откуда:
Сообщений: 1086
WITH cte AS ( SELECT *, LAG(value) OVER (ORDER BY [Date]) lag_value
              FROM src_table )
SELECT *
FROM cte
WHERE lag_value = 101 
           and  value <= lag_value
15 ноя 20, 11:31    [22232285]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить