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

------------------------------------------
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
14.03.2017, 17:08
    #39419123
Гы-гы
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update c увеличение на 1 от предыдущего
Alex_178, ну как не вспомнить
...
Рейтинг: 0 / 0
14.03.2017, 18:02
    #39419168
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update c увеличение на 1 от предыдущего
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
14.03.2017, 18:07
    #39419175
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update c увеличение на 1 от предыдущего
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
14.03.2017, 22:33
    #39419355
Alex_178
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update c увеличение на 1 от предыдущего
AmKad,
Спасибо большое! Буду разбираться
...
Рейтинг: 0 / 0
14.03.2017, 22:38
    #39419360
Alex_178
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update c увеличение на 1 от предыдущего
Гы-гы,

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


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