Обновление случайных дат в один столбец (даты повторяются)
Хорошо, сначала я определяю целое число даты для конкретной даты, начиная с которой мне нужно обновить случайные значения в dpm_dateto
колонка:
Запрос:
select to_char(to_date('15/05/2013','dd/mm/yyyy'), 'J') from dual;
Результат:
2456428
Теперь я пытаюсь обновить dpm_dateto
столбец, используя запрос ниже:
update t_dailypm
set dpm_dateto =
(select to_date(trunc(dbms_random.value(2456428,2456428+76)), 'J') from dual)
where dpm_loc = 'P2' and dpm_department like '%IN%';
Результат:
900 rows updated.
Но проблема в том, что каждое отдельное значение в dpm_dateto
столбец обновляется с той же датой. Я не могу разобраться с этим. Пожалуйста, помогите.
1 ответ
Не используйте подзапрос.
Просто установите =your_expression, как в примере ниже.
Oracle оптимизирует подзапрос и оценивает его только один раз, но выражение будет оцениваться для каждой строки:
create table xyz(
abc date
);
insert into xyz
select sysdate from dual
connect by level < 6;
select * from xyz;
ABC
--------
13/07/17
13/07/17
13/07/17
13/07/17
13/07/17
и сейчас:
update xyz set abc = to_date(trunc(dbms_random.value(2456428,2456428+76)), 'J');
select * from xyz;
ABC
--------
13/06/14
13/07/23
13/07/26
13/06/24
13/07/10