Переименовать таблицу, получив данные для нового имени из данных внутри таблицы
Дана таблица, в которой одно из полей это дата-время событий. Выглядят данные так:
2024-04-11 16:53:57.648000
Вопрос
Можно ли в одном запросе
- Получить новое имя состоящее из начальной даты-конечной даты
- И переименовать таблицу.
В общем случае, можно ли взять какие-то данные из таблицы и ее переименовать, используя в новом имени эти данные.
Я попытался сделать так:
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.
Я могу решить это на стороне клиента - сначала получить данные для имени, потом эти данные отправить вторым запросом на переименовку. Но можно ли сделать это одним запросом?