Переименовать таблицу, получив данные для нового имени из данных внутри таблицы

Дана таблица, в которой одно из полей это дата-время событий. Выглядят данные так:

2024-04-11 16:53:57.648000

Вопрос

Можно ли в одном запросе

  1. Получить новое имя состоящее из начальной даты-конечной даты
  2. И переименовать таблицу.

В общем случае, можно ли взять какие-то данные из таблицы и ее переименовать, используя в новом имени эти данные.

Я попытался сделать так:

WITH new_name AS (select 't_table' || '_' || replace(replace(left(min(date_time), 19), ' ', '_'), ':', '-') || '_' || 
replace(replace(left(max(date_time), 19), ' ', '_'), ':', '-') from t_table)
alter table t_table rename to (select * from new_name);

То есть, беру минимальную и максимальную дату, отрезаю дробную часть, меняю символы на допустимые (в общем, получаю новое имя). В результате получаю синтаксическую ошибку где-то рядом с ALTER.

Я могу решить это на стороне клиента - сначала получить данные для имени, потом эти данные отправить вторым запросом на переименовку. Но можно ли сделать это одним запросом?


Ответы (0 шт):