Я пытаюсь объединить материализованные представления нескольких столбцов из таблицы в одно представление, но получаю ошибки, когда пытаюсь добавить несколько представлений, начинающихся с одного и того же типа функции.
Например, я не получаю ошибоккогда я создаю следующее материализованное представление:
create materialized view doh1mat as select
(left(replace(filename,'DOH_cumulative_text_filesSwimming PoolsSpas_',''),strpos(replace(filename,'DOH_cumulative_text_filesSwimming PoolsSpas_',''),'_')-1)),
(trim(substring(coalesce(substring(content from 'Conducted By: (.*) Inspector Contact'),substring(content from 'Conducted By: (.*) Inspector Contact')) from '\((.*)\)')))
from doh1;
Но когда я пытаюсь добавить больше столбцов, например, со следующим sql:
create materialized view doh1mat as select
(left(replace(filename,'DOH_cumulative_text_filesSwimming PoolsSpas_',''),strpos(replace(filename,'DOH_cumulative_text_filesSwimming PoolsSpas_',''),'_')-1)),
(left(NULLIF(regexp_replace(substring(content from 'Zip: (.*) Type:'), '\D','','g'), ''),5)),
(trim(substring(coalesce(substring(content from 'Conducted By: (.*) Inspector Contact'),substring(content from 'Conducted By: (.*) Inspector Contact')) from '\((.*)\)'))),
(substring(content from 'Owner: (.*) Person')),
(substring(content from 'Charge: (.*) Pool')),
(trim(coalesce(replace(substring(content from 'VOLUME (.*) POOL L'),'.',''),replace(substring(content from 'VOLUME (.*) POOL L'),'.','')))),
(trim(coalesce(substring(content from 'Pool Operator: (.*) Phone'),substring(substring(content from 'Pool Operator: (.*) Phone') from '(.*) Phone')))),
(substring(content from 'Phone: (.*) Purpose')),
(substring(content from 'Phone: (.*) Phone')),
(substring(content from 'Email: (.*) Pool Operator')),
(substring(content from 'Address\(es\): (.*) DOH'))
from doh1;
, я получаю "ERROR: столбец" left ", указанныйболее одного раза ".
Поэтому я попытался изменить sql, чтобы поставить имя столбца перед каждой функцией:
create materialized view doh1mat as select
(phone_operator(substring(content from 'Phone: (.*) Phone'))),
(email_string(substring(content from 'Email: (.*) Pool Operator'))),
(email_string_2(substring(content from 'Address\(es\): (.*) DOH')))
from doh1;
Но ошибка" Я получаю ": функция phone_operator (text) неСуществовать ".
Есть ли способ" переименовать "или создать псевдоним столбцов при создании материализованного представления?
Если нет, то как я могу создатьматериализованные представления без Postgres, принимающего первый оператор за имя столбца? Кроме того, почему оператор, такой как LEFT (... является именем столбца, когда он все еще выполняет команду?