powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Заполнение последующих пустых строк последним заполненным значением
13 сообщений из 13, страница 1 из 1
Заполнение последующих пустых строк последним заполненным значением
    #39653288
svanrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день,

sql 2005 lead lag отсутсвуют

Как ещё можно в ms sql реализовать подобное заполнение (желательно не цикл) ?

NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
1111#
NULL - должно быть 1111#
2222#
NULL - должно быть 2222#
NULL - должно быть 2222#
NULL - должно быть 2222#
NULL - должно быть 2222#
NULL - должно быть 2222#
NULL - должно быть 2222#
NULL - должно быть 2222#
NULL - должно быть 2222#
NULL - должно быть 2222#
NULL - должно быть 2222#
NULL - должно быть 2222#
NULL - должно быть 2222#
08886
NULL - должно быть 08886
NULL - должно быть 08886
NULL - должно быть 08886
NULL - должно быть 08886
NULL - должно быть 08886
NULL - должно быть 08886
NULL - должно быть 08886

Спасибо
...
Рейтинг: 0 / 0
Заполнение последующих пустых строк последним заполненным значением
    #39653295
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lead и lag бы вам не помогли, потому что отсутствует поле, задающее порядок.
...
Рейтинг: 0 / 0
Заполнение последующих пустых строк последним заполненным значением
    #39653315
svanrus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей Алексеевич,

а если так ?



28.05.2018 14:40:04 1 NULL
28.05.2018 14:40:07 2 NULL
28.05.2018 14:41:04 3 NULL
28.05.2018 14:41:04 4 NULL
28.05.2018 14:41:04 5 NULL
28.05.2018 14:41:05 6 NULL
28.05.2018 14:42:21 7 NULL
28.05.2018 14:42:22 8 NULL
28.05.2018 14:44:32 9 NULL
28.05.2018 14:44:32 10 NULL
28.05.2018 14:45:08 11 NULL
28.05.2018 14:45:09 12 1111#
28.05.2018 14:46:25 13 NULL - должно быть 1111#
28.05.2018 14:46:25 14 2222#
28.05.2018 14:46:25 15 NULL - должно быть 2222#
28.05.2018 14:46:26 16 NULL - должно быть 2222#
28.05.2018 14:46:33 17 NULL - должно быть 2222#
28.05.2018 14:46:34 18 NULL - должно быть 2222#
28.05.2018 14:47:09 19 NULL - должно быть 2222#
28.05.2018 14:47:09 20 NULL - должно быть 2222#
28.05.2018 14:47:09 21 NULL - должно быть 2222#
28.05.2018 14:47:10 22 NULL - должно быть 2222#
28.05.2018 14:48:15 23 NULL - должно быть 2222#
28.05.2018 14:48:32 24 NULL - должно быть 2222#
28.05.2018 14:48:56 25 NULL - должно быть 2222#
28.05.2018 14:48:56 26 NULL - должно быть 2222#
28.05.2018 14:48:56 27 8886
28.05.2018 14:48:57 28 NULL - должно быть 08886
28.05.2018 14:50:10 29 NULL - должно быть 08886
28.05.2018 14:50:10 30 NULL - должно быть 08886
28.05.2018 14:50:27 31 NULL - должно быть 08886
28.05.2018 14:50:38 32 NULL - должно быть 08886
28.05.2018 14:50:38 33 NULL - должно быть 08886
28.05.2018 14:50:38 34 NULL - должно быть 08886
...
Рейтинг: 0 / 0
Заполнение последующих пустых строк последним заполненным значением
    #39653325
Фотография Дедушка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
например:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
select
isnull(t1.<ваше поле>, t3.[значение на замену])
from
[ваша выборка] t1
cross apply
(
select top 1
t2.[ваше поле] as [значение на замену]
from
[ваша выборка] t2
where
t2.[ваше поле] is not null and
t2.[поле даты] < t1.[поле даты]
order by
t2.[поле даты] desc
) t3
...
Рейтинг: 0 / 0
Заполнение последующих пустых строк последним заполненным значением
    #39653329
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
select
  a.*
  , isnull ( a.[второе поле], ( select top 1 p.[второе поле] from [а если так] p where p.[первое поле]< a.[первое поле] where p.[второе поле] is not null order by p.[первое поле] desc ) )
from [а если так] a
...
Рейтинг: 0 / 0
Заполнение последующих пустых строк последним заполненным значением
    #39653543
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svanrusКак ещё можно в ms sql реализовать подобное заполнение (желательно не цикл) ?логика "протяжки" значений вполне себе успешно реализуется на оконном MAX() OVER(). Осталось только вспомнить - поддерживает ли его MS SQL Server 2005 ?
...
Рейтинг: 0 / 0
Заполнение последующих пустых строк последним заполненным значением
    #39653588
andrey odegov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максимальный - не значит последний:
28.05.2018 14:40:04 1 NULL
28.05.2018 14:40:07 2 NULL
28.05.2018 14:41:04 3 NULL
28.05.2018 14:41:04 4 NULL
28.05.2018 14:41:04 5 NULL
28.05.2018 14:41:05 6 9999#
28.05.2018 14:42:21 7 NULL
28.05.2018 14:42:22 8 NULL
28.05.2018 14:44:32 9 NULL
28.05.2018 14:44:32 10 NULL
28.05.2018 14:45:08 11 NULL
28.05.2018 14:45:09 12 1111#
28.05.2018 14:46:25 13 NULL <— что должно быть здесь 1111# или 9999#?
...
Рейтинг: 0 / 0
Заполнение последующих пустых строк последним заполненным значением
    #39653614
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey odegovМаксимальный - не значит последний:Эта проблема решается довольно просто:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
declare @t table (id int identity, v int);

insert into @t
values
 (null), (null), (2), (null), (null), (1), (null), (null);

select
 *,
 cast(substring(max(str(id, 10) + str(v, 10)) over (order by id), 11, 10) as int)
from
 @t
order by
 id;
...
Рейтинг: 0 / 0
Заполнение последующих пустых строк последним заполненным значением
    #39653655
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invmЭта проблема решается довольно простоИменно!!!
А впервые этот метод мне лично встретился на оракловой ветке форума ;)
...
Рейтинг: 0 / 0
Заполнение последующих пустых строк последним заполненным значением
    #39653656
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щукина Анна,

А, соответственно, про " бабушкин трюк " довелось узнать всё из той же оракловой ветки форума, но немного ранее :)
...
Рейтинг: 0 / 0
Заполнение последующих пустых строк последним заполненным значением
    #39653998
andrey odegov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щукина Анна, у Oracle есть LAST_VALUE (FIRST_VALUE) с IGNORE NULLS.
...
Рейтинг: 0 / 0
Заполнение последующих пустых строк последним заполненным значением
    #39654560
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey odegov,

во-первых, у Оракла есть не только first_value / last_value с поддержкой ignore nulls, но и LEAD / LAG, как минимум.
во-вторых, по ссылке обсуждается Oracle 8i, в котором уровень развития аналитических функций (в MS их называют - "оконные") хоть и был выше, чем текущая их реализация в MS SQL Server, но кляузы ignore nulls, всё же, ещё не существовала. Она появилась только в версии 10g...
...
Рейтинг: 0 / 0
Заполнение последующих пустых строк последним заполненным значением
    #39654664
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в sql тоже уже есть FIRST_VALUE можно дорисовать и с "ignore null"
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Заполнение последующих пустых строк последним заполненным значением
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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