|
Заполнить Null значениями из пред. строки
|
|||
---|---|---|---|
#18+
Всем привет, прошу подсказать как можно исправить код, чтобы верно заполнялись пустые значения значениями из пред. строки. Пример данных и вторая таблица до какого решения дошел: авторDECLARE @Customers TABLE (Id varchar(10), Date date, Terminal_Id integer, LastTimeUpdate datetime) INSERT INTO @Customers VALUES ('20100101-1', '20100101', NULL, NULL), ('20100101-2', '20100101', NULL, NULL), ('20100102-1', '20100102', 1, '2010-01-02 00:28:19.000'), ('20100102-2', '20100102', NULL, NULL), ('20100103-1', '20100103', 1, '2010-01-03 00:22:19.000'), ('20100103-2', '20100103', NULL, NULL), ('20100104-1', '20100104', NULL, NULL), ('20100104-2', '20100104', 2, '2010-01-04 00:29:19.000'), ('20100105-1', '20100105', 1, '2010-01-05 00:26:19.000'), ('20100105-2', '20100105', Null, NULL) Select * From @Customers Order by Id /*Запрос*/ Select Id, Date, first_value(Terminal_Id) over (partition by grp order by date) as Terminal_Id, first_value(LastTimeUpdate) over (partition by grp order by date) as LastTimeUpdate from ( Select *, sum(case when Terminal_Id is not null then 1 end) over (order by id) as grp From @Customers ) t Как хочу, чтобы было: автор/* Final */ DECLARE @Final TABLE (Id varchar(10), Date date, Terminal_Id integer, LastTimeUpdate datetime) INSERT INTO @Final VALUES ('20100101-1', '20100101', NULL, NULL), ('20100101-2', '20100101', NULL, NULL), ('20100102-1', '20100102', 1, '2010-01-02 00:28:19.000'), ('20100102-2', '20100102', NULL, NULL), ('20100103-1', '20100103', 1, '2010-01-03 00:22:19.000'), ('20100103-2', '20100103', NULL, NULL), ('20100104-1', '20100104', 1, '2010-01-03 00:22:19.000'), ('20100104-2', '20100104', 2, '2010-01-04 00:29:19.000'), ('20100105-1', '20100105', 1, '2010-01-05 00:26:19.000'), ('20100105-2', '20100105', 2, '2010-01-04 00:29:19.000') Select * From @Final ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 10:59 |
|
Заполнить Null значениями из пред. строки
|
|||
---|---|---|---|
#18+
Dolphiin, организуйте цикл при помощи курсора, вычисляйте и обновляйте. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 11:37 |
|
Заполнить Null значениями из пред. строки
|
|||
---|---|---|---|
#18+
Владислав Колосов Если не составит особого труда можете по приведенному примеру написать, как можно с помощью курсора это реализовать? Сам про него только слышал, ни разу не использовал и мне конечно быстрее получится понять его работу на уже готовом примере. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 14:09 |
|
Заполнить Null значениями из пред. строки
|
|||
---|---|---|---|
#18+
Dolphiin, курсор выбирает одну строку за каждый цикл итерации из результата запроса, который указан в выражении курсора. Производите необходимые вычисления и обновляете текущую строку. https://www.yandex.ru/search/?lr=39&offline_search=1&text=sql server cursor example ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 14:20 |
|
Заполнить Null значениями из пред. строки
|
|||
---|---|---|---|
#18+
Dolphiin, В качестве примера (до нужного вида допилите самостоятельно) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2021, 15:39 |
|
|
start [/forum/topic.php?fid=46&msg=40102097&tid=1684233]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 133ms |
0 / 0 |