powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Update c увеличение на 1 от предыдущего
6 сообщений из 6, страница 1 из 1
Update c увеличение на 1 от предыдущего
    #39419041
Alex_178
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Просьба помочь разобраться.
Есть таблица

------------------------------------------
id | datetime | etc..
------------------------------------------
1 | 01.03.2017 12:15:00 | |
2 | null | |
3 | null | |
4 | null | |
5 | null | |


Необходимо увеличть каждое последбщее datetime по порядку, в качетсве параметар брать предыдущую запись + любое врменное значение

есть запрсо

update report r set r.datetime = (SELECT datetime + INTERVAL '15' MINUTE from
(select rr.datetime from report rr where r.id > rr.id and rownum = 1 order by rr.id desc)) where r.datetime is null;

Но в итоге этот запрос за одну итарацию обрабатывает только одну запись.
Подскажите пожалуйста как сделать что бы за один запуск запроса обрабатывалис все пакеты. В Oracle не селен
...
Рейтинг: 0 / 0
Update c увеличение на 1 от предыдущего
    #39419123
Гы-гы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex_178, ну как не вспомнить
...
Рейтинг: 0 / 0
Update c увеличение на 1 от предыдущего
    #39419168
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_178,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
create table t1 as select level id, decode(level, 1, trunc(sysdate)) dt from dual connect by level <= 5;

Таблица создана.


select * from t1;

        ID DT
---------- -------------------
         1 14.03.2017 00:00:00
         2
         3
         4
         5


merge into t1 tgt
using
    (select id, first_value(sysdate) over (order by id) + row_number () over (order by id) - 1 dt
     from t1
    ) src on (tgt.id = src.id)
when matched then update set
    tgt.dt = src.dt
where decode(tgt.dt, src.dt, 1) is null;

5 строк объединено.


select * from t1;

        ID DT
---------- -------------------
         1 14.03.2017 18:01:23
         2 15.03.2017 18:01:23
         3 16.03.2017 18:01:23
         4 17.03.2017 18:01:23
         5 18.03.2017 18:01:23


drop table t1 purge;

Таблица удалена.
...
Рейтинг: 0 / 0
Update c увеличение на 1 от предыдущего
    #39419175
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKadAlex_178,

Код: plsql
1.
    (select id, first_value(sysdate) over (order by id) + row_number () over (order by id) - 1 dt

Код: plsql
1.
 (select id, first_value(/*sysdate*/dt) over (order by id) + (row_number () over (order by id) - 1) * interval '15' minute dt
...
Рейтинг: 0 / 0
Update c увеличение на 1 от предыдущего
    #39419355
Alex_178
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AmKad,
Спасибо большое! Буду разбираться
...
Рейтинг: 0 / 0
Update c увеличение на 1 от предыдущего
    #39419360
Alex_178
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гы-гы,

Дада))) Думал не о том, все мысли были про запрос
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Update c увеличение на 1 от предыдущего
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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