Мне нужно создать МАТЕРИАЛИЗОВАННЫЙ ВИД на столе.Один из столбцов очень проблематичен.Мне нужно изменить его значения и тип данных в запросе.Я хотел бы спросить вас, как быстро это происходит при создании matview?
У меня есть несколько таблиц в качестве вывода некоторых процессов декодирования.Чтобы сделать эти процессы более эффективными, я должен создать, например, тест-запросы (и несколько других вещей, не связанных здесь).Итак, в заключение, мне нужно создать МАТЕРИАЛИЗОВАННЫЙ ВИД таблиц, как уже упоминалось.Один из столбцов содержит неправильные данные с типом wrond (возвращает TEXT вместо VARCHAR).К счастью, я мог их быстро декодировать, но приведение типов - другое дело.
Проблема в том, что из-за недостатка опыта я не могу найти правильный способ изменить значения и тип сразу!У меня есть два решения, но они не выглядят очень элегантно:
1) Я предварительно создал таблицу и изменил значение столбцов после секции SELECT, чем я создал matview из этой таблицы (это медленнои сложный для десятков строк)
2) Я CAST сам оператор CASE, в котором я изменяю значения, и закрывал его с помощью END AS VARCHAR (он работал хорошо, за исключением того, что имена полей были удалены из matviewи это очень огорчило меня)*
CREATE MATERIALIZED VIEW IF NOT EXISTS some_schema.some_matview AS
(SELECT
first_column,
CAST(CASE
WHEN second_column = '1' THEN 'A'
WHEN second_column = '2' THEN 'B'
END AS VARCHAR),
third_column,
FROM base_schema.base_table);
Я также попробовал некоторые другие предположительно правильные формы созвездия CAST-CASE, но все они привели меня к различным ошибкам.
В заключение: мне нужно, чтобы second_column был приведен как VARCHAR в моемmatview со значениями «A» или «B» вместо «1» или «2», которые являются ТЕКСТАМИ.Результаты, которые я получаю, не соответствуют моим ожиданиям, однако они более или менее верны.